定義:將表中元素乙個接乙個的存入一組連續的儲存單元中,這種儲存結構是順序結構。
原理:順序表儲存是將資料元素放到一塊連續的記憶體儲存空間,訪問效率高,速度快。但是不可以動態增加長度。
優點:訪問速度高效,通過下標來直接儲存
缺點:1.插入和刪除比較慢(運算時間代價o(n)) 2.不可以增長長度
比如:插入或者刪除乙個元素時,整個表需要遍歷移動元素來重新排一次順序。在順序表中,插入乙個元素平均移動的次數是n
2\frac
2n次,刪除乙個元素平均移動此時是n−1
2\frac
2n−1次
#include
#include
#define list_init_size 5
//初始記憶體大小
#define list_increase_size 5
//記憶體增量
typedef
int seqtype;
//表中存放資料型別
typedef
int status;
//返回的操作狀態
typedef
struct
//表結構
sqlist;
//建立表
sqlist createlist()
//初始化表
status initlist
(sqlist &list)
//資料長度為空
list.length=0;
//表大小為初始大小
list.size=list_init_size;
return1;
}//插入元素
status insert
(sqlist &list,
int index, seqtype m)
//插入位置為負數則插入到表最後位置
if(index<0)
//表長度等於表大小則表儲存空間已滿,需要追加記憶體。
if(list.length==list.size)
list.ele=extra;
//更新表大小
list.size+
=list_increase_size;
}//插入核心操作:將插入點後的元素向後移動乙個單位
for(
int i = list.length; i>index; i--
)//插入
list.ele[index]
=m;//更新資料長度
list.length++
;return1;
}//刪除元素
status delete
(sqlist &list,
int index)
//刪除下標小於0則刪除最後乙個元素
if(index<0)
//刪除核心操作,元素前移
for(
int i = index; list.length-
1>i ; i++
)//更新資料長度
list.length--
;return1;
}//銷毀表
intdestory
(sqlist &list)
intmain
(int argc,
char
const
*ar**)
printf
("資料長度:%d\n"
,list.length)
;printf
("表大小:%d\n"
,list.size)
;//destory(list);
return0;
}
資料結構 順序表(C語言實現)
順序表的定義是 把線性表中所有表項按照其邏輯順序依次儲存到從計算機儲存中指定儲存位置開始的一塊連續的儲存空間中。這樣,線性表中第乙個表項的儲存位置就是被指定的儲存位置,第i個表項 2 i n 的儲存位置緊接在第i 1個表項的儲存位置的後面。假設順序表中每個表項的資料型別為t,則每個表項所占用儲存空間...
C語言實現順序表 資料結構
include include 需求,寫乙個順序線性表,儲存乙個位址位置 define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 define true 1 define false 0 define ...
資料結構 順序表(C語言實現)
順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪查改。順序表一般可以分為靜態順序表 使用定長陣列儲存 和動態順序表 使用動態開闢的陣列儲存 本次實現的是動態順序表,具體 如下 common.h include include includ...