鏈式儲存定義
為了表示每個資料元素與其直接後繼元素之間的邏輯關係,每個元素除了儲存本身的資訊外,還需要儲存指示其直接後繼的資訊。
表頭結點
鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊。
資料結點
鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊。
尾結點
鍊錶中的最後乙個資料結點,其下一元素指標為空,表示無後繼。
指標節點定義
頭節點定義
資料元素定義
獲取第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 線性表...