跟我學資料結構 線性表的鏈式儲存結構

2021-06-18 14:48:48 字數 1710 閱讀 7810

鏈式儲存定義

為了表示每個資料元素與其直接後繼元素之間的邏輯關係,每個元素除了儲存本身的資訊外,還需要儲存指示其直接後繼的資訊。

表頭結點

鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊。

資料結點

鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。

尾結點

鍊錶中的最後乙個資料結點,其下一元素指標為空,表示無後繼。

指標節點定義

頭節點定義

資料元素定義

獲取第pos個元素操作

判斷線性表是否合法

判斷位置是否合法

由表頭開始通過next指標移動pos次後,當前元素的next指

針即指向要獲取的元素

插入元素到位置pos的演算法

1 判斷線性表是否合法

2 判斷插入位置是否合法

3 由表頭開始通過next指標移動pos次後,當前元素的next指

4 針即指向要插入的位置

5 將新元素插入

6 線性表長度加1

刪除元素操作

node->next = current->next;

current->next = node;

刪除第pos個元素的演算法

1 判斷線性表是否合法

2 判斷插入位置是否合法

3 獲取第pos個元素

4將第pos個元素從鍊錶中刪除

5 線性表長度減1

具體操作**

#include

#include

#include "linklist.h"

typedef struct _tag_linklist

tlinklist;

linklist* linklist_create() // o(1)

return ret;

}void linklist_destroy(linklist* list) // o(1)

void linklist_clear(linklist* list) // o(1)

}int linklist_length(linklist* list) // o(1)

return ret;

}int linklist_insert(linklist* list, linklistnode* node, int pos) // o(n)

node->next = current->next;

current->next = node;

slist->length++;

}return ret;

}linklistnode* linklist_get(linklist* list, int pos) // o(n)

ret = current->next;

}return ret;

}linklistnode* linklist_delete(linklist* list, int pos) // o(n)

ret = current->next;

current->next = ret->next;

slist->length--;

}return ret;}

資料結構 鏈式儲存線性表

鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...

線性表的鏈式儲存 資料結構

為了表示每個資料元素與其直接後繼資料元素之間的邏輯關係,除了儲存本身的資訊之外,還需儲存乙個指示其直接後繼的資訊 即直接後繼的儲存位置 我們把儲存資料元素資訊的位置稱為資料域,把儲存其直接後繼資訊的位置稱為指標域。這兩部分組成資料元素的結點 node 頭結點頭結點是為了操作的統一和方便而設立的,放在...

資料結構 線性表之鏈式儲存結構

資料結構定義 common.h ifndef hi comm h define hi comm h include include include include define list init size 100 線性表儲存空間的初始分配量 define list increment 10 線性表...