大話資料結構學習 線性表的單鏈表儲存結構

2022-09-24 13:30:17 字數 1629 閱讀 4608

#define ok 1

#define error 0

typedef int status;

typedef struct

node;

typedef struct node *linklist; // 定義單鏈表

// 獲取單鏈表的長度

status getelem(linklist l, int i, elemtype *e)

if (!p || j > i) // 當p為空或者j大於i時

return error; // 返回錯誤

*e = p->data; // 將p的值賦給e

return ok; // 返回ok

}// 在單鏈表中插入元素

status listinsert(linklist *l, int i, elemtype e)

if (!p || j > i) // 當p為空或者j大於i時

return error; // 返回錯誤

s = (linklist)malloc(sizeof(node)); // 分配空間

s->data = e; // 將e賦給新結點

s->next = p->next; // 將新結點插入到p的後面

p->next = s; // 將p的後繼指向新結點

return ok; // 返回ok

}// 刪除單鏈表中的第i個元素

status listdelete(linklist *l, int i, elemtype *e)

if (!(p->next) || j > i) // 當p為空或者j大於i時

return error; // 返回錯誤

q = p->next; // q指向待刪除結點

p->next = q->next; // 將q的後繼指向p的後繼

*e = q->data; // 將q的值賦給e

free(q); // 釋放q,free函式的作用是釋放記憶體

return ok; // 返回ok}/*

插入和刪除演算法都是由2部分組成,第一部分就是查詢第i個元素,第二部分就是插入或刪除元素。

對於插入或刪除資料越頻繁的操作,單鏈表比起順序儲存來說,單鏈表的優勢是很明顯的。

*/

單鏈表與結構與順序結構的優缺點:

①儲存分配的方式不同,順序儲存結構用一段連續儲存單元一次儲存線性表的資料元素,單鏈表則採用鏈式儲存結構,用一組任意的儲存單元存放線性表的元素。

②時間效能:查詢:順序儲存結構:o(1),單鏈表o(n),

插入和刪除:順序儲存結構需要平均移動表長一半的元素,時間複雜度為o(n);單鏈表在找出位置的指標後,插入和刪除時間複雜度僅為o(1)

③空間效能:順序儲存結構需要預分配儲存空間,分大了就浪費,分小了,就容易發生溢位;單鏈表不需要分配空間,只要有就分配,元素個數也不收限制。

大話資料結構學習 線性表的順序儲存結構

define maxsize 20 typedef int elemtype typedef struct sqlist 初始化順序表 status initlist sqlist l 返回順序表的長度 int listlength sqlist l define ok 1 define error...

資料結構學習 線性表

線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...

資料結構學習 線性表

考試前複習下資料結構,把一些知識點整理在這!主要參考了殷人昆主編的 資料結構 用物件導向方法與c 語言描述 這本書,以及中山大學劉聰老師的課件內容!鍊錶雙鏈表 線性表 linear list 是由n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。維基百科 線性表是乙個...