線性表是由相同資料元素的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
(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 刪除線性...