資料結構之順序表的實現

2021-10-23 05:14:27 字數 2675 閱讀 2940

俗話說,好記性不如乙個爛筆頭,在過了若干天之後我果然忘了順序表的實現…

以此寫一篇文章,防止自己忘記也幫助剛入門的小夥伴。

順序表也就是採用一片連續的記憶體空間來儲存相應的資料,既然是連續也就造成了空間必然有限,但帶來的優點也有很多,比如操作很快,理解容易…既然時連續的記憶體空間,採取陣列的形式是最為方便的了。

順序表的基本操作的實現還是蠻簡單的,

主要操作有

status list_init(sqlistptr l);//初始化列表

void list_destory(sqlistptr l); //銷毀列表

void list_clear(sqlistptr l); //清空列表

bool list_empty(sqlistptr l); //判斷列表是否為空

int list_size(sqlistptr l); //返回列表的元素個數

status list_retrieve(sqlistptr l, int pos,elemtype*elem);//取出位置pos處的元素

status list_locate(sqlistptr l,elemtype elem,int*pos);//定位elem所在的位置

status list_insert(sqlistptr l, int pos, elemtype elem);//在pos處插入elem

status list_delete(sqlistptr l, int pos);//刪除pos處的元素

status list_prior(sqlistptr l, int pos, elemtype * elem);//取出pos的前驅元素

status list_next(sqlistptr l, int pos, elemtype*elem);//取出pos的後繼元素

void list_display(sqlistptr l);//將現行表中的元素輸出

請忽略status帶來的效果(判斷是否執行成功暫且不重要)

順序表主要依靠下標來插入,刪除,找到相應元素,這裡就不將所有的基本操作貼上來了。

相應解釋在注釋中!

選取一部分操作進行解釋,所有函式均定義成void型方便理解,

#include

#include

#include

#define max 100

typedef

struct linklistlinklist,

*linklistptr;

//linklistptr 指向順序表的指標

void

linklist_init

(linklistptr l)

void

linklist_create

(linklistptr l,

int elem)

l->elem[l->linklist_size]

= elem;

//存資料

l->linklist_size++

;//長度加一

}void

linklist_insert

(linklistptr l,

int pos,

int elem)

if(l->linklist_size == l->linklist_maxsize)

for(

int i = l->linklist_size ; i >= pos ; i--)

l->elem[pos -1]

= elem;

//在指定位置插入元素

l->linklist_size++

;//長度加一

}void

linklist_print

(linklistptr l)

for(

int i =

0;ilinklist_size;i++

)printf

("\n");

}void

linklist_delete

(linklistptr l,

int pos)

for(

int i = pos -

1;i < l->linklist_size ; i++

) l->linklist_size--

;//長度減一

}int

main()

linklist_print

(&l)

;linklist_delete

(&l,2)

;linklist_print

(&l)

;linklist_insert

(&l,2,

99);linklist_print

(&l)

;}

ps:看不懂的操作,想不明白的操作,拿出紙筆,畫就完事了!!!

資料結構之順序表的實現

線性表的實現分順序儲存結構和鏈式儲存結構。順序表屬於線性表的一種,是用一組位址連續的儲存單元依次來實現對元素的儲存。但是,順序結構最大的缺點就是在進行插入和刪除操作的時候,如果插入位置不理想,那麼需要移動大量的元素。可以發現在順序儲存結構中,他們相鄰的元素的儲存位置也是相鄰的,在申請記憶體的的時候,...

資料結構之順序表的實現

本文為對順序表的一些基本操作 1.建立鍊錶 typedef struct sqlistsqlist 2.實現對鍊錶的初始化 int init sqlist list 接下來便是對順序表的一些基礎能進行實現 注意 插入和刪除的時候要注意是否越界 插入 插入元素時,插入位置後南面的元素要往後移動乙個元素...

資料結構之線性順序表實現

線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被稱作 第乙個 的資料元素 2 存在唯一的乙個被稱作 最後乙個 的資料元素。3 除第乙個之外,集合中的每個資料元素均只有乙個前驅 4 除最後乙個外,集合中每...