資料結構 鏈式儲存

2021-07-10 23:56:41 字數 1719 閱讀 9957

/*

鏈式儲存定義:

為了表示每個資料元素與其直接後繼元素之間的邏輯關係,

每個元素除了儲存本身的資訊外,還需要儲存指示其直接後繼的資訊。

鏈式儲存邏輯結構

n個結點連線成乙個鏈式線性表的結構叫做鍊錶。當每個結點中包含乙個指標域時,叫做單鏈表。 

鍊錶的基本概念

表頭結點:

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

資料結點:

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

尾結點:

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

*//*

鏈式儲存結構:

在c語言中可以用結構體來定義鏈結中的指標域

鍊錶中的表頭結點也可以用結構體實現

typedef struct _tag_linklistnode linklistnode;

struct _tag_linklistnode

;                          結點指標域定義 

typedef struct _tag_linklist

tlinklist;               頭結點的定義。

struct value

;      資料元素定義示例 

*//*

鏈式儲存結構

獲取第pos個元素操作

*判斷線性表是否合法

*判斷位置是否合法

*由表頭開始通過nxet指標移動pos次後,當前元素的next指標即指向要獲取的元素

linklistnode* current = (linklistnode*)list;

for(i=0;i 

ret = current->next;

*/ /*

鏈式儲存結構:

插入元素操作:    node->next = current->next;  

current->next =node; 

*判斷線性表是否合法

*判斷插入位置是否合法

*由表頭開始通過next指標移動pos次後,當前元素的next指標即指向要插入的位置

*將新元素插入

*線性表長度加1 

linklistnode* current = (linklistnode*)list;

for(i=0;inext != null);i++)

node->next = current->next;

current->next = node;

slist->length++;

*//*

刪除元素操作:

current -> next = ret -> next; 

刪除第pos個元素的演算法:

*判斷線性表是否合法

*判斷插入位置是否合法

*獲取第pos個元素

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

*線性表長度減1 

tlinklist* slist = (tlinklist*)list;

linklistnode* ret = null;

int i  =0;

if((slist != null)&& (0<= pos)&&(poslength))

ret = current->next;

current->next = ret->next;

slist->length--;}

資料結構 佇列(鏈式儲存)

資料結構和演算法 摘要 前一篇部落格主要討論迴圈佇列,但是迴圈佇列都是事先申請好空間,使用期間是不能釋放的。但是鏈佇列,每次都可以進行申請和釋放結點。再無法預估佇列長度的時候,我們可以考慮用鏈佇列。1 設計佇列資料結構 結點結構 typedef struct queue node queue nod...

《資料結構 棧》鏈式儲存

一 鏈式儲存 和 順序結構 對比?棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1 如果棧的數量可預知,則使用順序棧,否則,則使用鏈棧 鏈棧 要求每個元素都有指標域,增加了記憶體開銷,但對於長度無限制。二 棧 鏈式結構 棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1...

資料結構之佇列(鏈式儲存)

一 佇列結點package linkedqueue packagname linkedqueue classname linkedqueuenode date 2017 1 25 author cullianns des 鏈式儲存結點結構 public class linkedqueuenode 二...