線性表之順序表

2021-10-24 13:09:12 字數 1766 閱讀 1261

線性表是由相同資料元素的n個資料元素組成的有限序列,線性表按照儲存結構,可以分為順序表和煉表兩種型別。

順序表是線性表的一種順序儲存形式

順序表通常用一維陣列實現,其可以是靜態(棧、靜態儲存區、全域性儲存區等),也可以是動態分配(占用堆記憶體)的。

順序表最主要的特點是可以進行隨機訪問,即通過索引可以在o(1)時間複雜度內訪問其任意元素。但順序表的刪除和插入元素則較為不便,需移動較多元素才能保持其邏輯和物理上的連續性。

順序表常見的操作有:

函式功能

init(vector, size)

初始化長度為size的vector

insert(vector,loc,value)

將value插入vector的loc位置

expand(vector)

將vector進行擴容

remove(vector,index)

將index所對應的元素從vector移除

search(vector, value)

在vector查詢value,返回下標

print(vector)

列印vector的每個元素

clear(vector)

清除順序表vector

順序表的構造

#include

#include

#define error 0

#define ok 1

typedef

struct vector vector;

void

init

(vector *vector,

int size)

void

expand

(vector *vector)

free

(old_data);}

//length為從1開始的長度,而loc和index等都為從0開始的位置索引值

intinsert

(vector *vector,

int loc,

int value)

if(vector->length >= vector->size)

for(

int i = vector->length; i > loc;

--i)

vector->data[loc]

= value;

vector->length++

;return ok;

}int

search

(vector *vector,

int value)

}return-1

;}intdelete_node

(vector *vector,

int index)

for(

int i = index +

1; i < vector->length;

++i)

vector->length = vector->length -1;

return ok;

}void

print

(vector *vector)

printf

("%d"

, vector -> data[i]);

}printf

("\n");

}void

clear

(vector *vector)

intmain()

線性表之順序表

資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也 是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的 一些基本知識比如c 中的物件導向思想也引入進來,同...

線性表之順序表

線性表 我們都知道是一種常用的資料結構,也是歷來各種考試的重點。今天抽了一些時間把線性表做了總結。線性表是n個資料元素的乙個有限序列。用公式表示為 l a1,a2,a3,a4,an 因為線性表是乙個有限的序列,所以也如上面公式所示,它的各個元素是相繼排放的。那麼它的每個相連的兩項之間都是有乙個邏輯關...

線性表之順序表

線性表的操作 initlist l 初始化操作,建立乙個空的線性表l。listempty l 判斷線性表是否為空表,空返回true,否則返回false。clearlist l 將線性表清空。getelem l,i,e 將線性表l中的第i個位置元素值返回給e。listdelete l,i,e 刪除線性...