資料結構之鍊錶(一)

2021-08-06 00:16:15 字數 1726 閱讀 6335

很多人,一接觸到資料結構就難懂,就說有難度,還有就說,鍊錶有什麼用?今天我就詳細的說下,這個鍊錶有什麼用。

一、鍊錶介紹

1、鍊錶有位址不連續的結點序列,必須通過指標相互連線。

2、鍊錶的分類:

(1)單向線性鍊錶

每個節點中除了儲存資料結構內容以外,還需要儲存指向下乙個節點的指標,叫做後指標。最後乙個節點的後指標為null。其中第乙個節點叫做頭節點,指向頭結點的指標叫做頭指標。最後乙個節點叫做尾節點。

(2)單向迴圈鍊錶

與單向線性鍊錶不同的是,鍊錶尾節點的後指標指向頭節點。首尾相接構成環狀結構。

(3)雙向線性鍊錶

每個節點除了存放本身元素以外,還需要儲存指向下乙個節點的指標,叫做後指標,以及指向前乙個節點的指標,叫做前指標。雙向線性鍊錶中頭節點的前指標為空,以及尾節點後指標也是空指標。

(4)雙向迴圈鍊錶

與雙向線性鍊錶相比,頭節點中的前指標指向尾節點,尾節點的後指標指向頭節點,構成環狀結構。

(5)其他

除了以上鍊表以外,還有很多鍊錶,如陣列鍊錶、鍊錶陣列等等。

簡單介紹完了,下面開始一一講解下。

二、單向線性鍊錶 (重點)

1、參看:c中煉表 

鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最後乙個節點的指標。一般查詢乙個節點的時候需要從第乙個節點開始每次訪問下乙個節點,一直訪問到需要的位置。但是也可以提前把乙個節點的位置另外儲存起來,然後直接訪問。當然如果只是訪問資料就沒有必要了,不如在鍊錶上儲存指向實際資料的指標。這樣一般是為了訪問鍊錶中的下乙個或者前乙個(需要儲存反向的指標,見下面的雙向鍊錶)節點。

相對於下面的雙向鍊錶,這種普通的,每個節點只有乙個指標的鍊錶也叫單向鍊錶,或者單鏈表。通常用在每次只會按順序遍歷這個鍊錶的時候(例如圖的鄰接表,通常都是按固定順序訪問的)。

舉個例子:建立鍊錶儲存學生的資訊,並且可以進行,插入、刪除操作,並將學生的資訊輸出。

參看:鍊錶實現學生資訊管理

#include #include #include struct node

;typedef struct node node;

void scanning(node *head); /*申明瀏覽函式*/

node *insert(node *head); /*申明插入函式*/

void del(node *head); /*申明刪除函式*/

void fix(node *head); /*申明修改函式*/

int main (void)

}printf(" ");

printf("謝謝使用! ");

return 0;

}void scanning(node *head) /*定義瀏覽函式*/

while(t!=null)

}node *insert(node *head) /*定義插入函式*/

else /*原本有元素*/

return head;

}void del(node *head) /*定義刪除函式*/

else}}

void fix(node *head) /*定義修改函式*/}}

p=p->next;

}}

資料結構之鍊錶 一

線性表分為順序儲存結構和鏈式儲存結構2種。順序儲存結構的特點 任何乙個元素都可以進行隨即訪問,訪問速度高。但不適合瀕繁的插入和刪除操作。鏈式儲存結構 鍊錶 不可以隨即訪問元素。但適合頻繁的插入和刪除操作。乙個靜態鍊錶的例子 include struct node typedef struct nod...

資料結構之鍊錶 一

線性表分為順序儲存結構和鏈式儲存結構2種。順序儲存結構的特點 任何乙個元素都可以進行隨即訪問,訪問速度高。但不適合瀕繁的插入和刪除操作。鏈式儲存結構 鍊錶 不可以隨即訪問元素。但適合頻繁的插入和刪除操作。乙個靜態鍊錶的例子 include struct node typedef struct nod...

資料結構之鍊錶 一

線性表分為順序儲存結構和鏈式儲存結構2種。順序儲存結構的特點 任何乙個元素都可以進行隨即訪問,訪問速度高。但不適合瀕繁的插入和刪除操作。鏈式儲存結構 鍊錶 不可以隨即訪問元素。但適合頻繁的插入和刪除操作。乙個靜態鍊錶的例子 include struct node typedef struct nod...