資料結構學習筆記 鍊錶

2021-10-04 09:41:53 字數 3468 閱讀 1608

2.建立鍊錶

3.單向和雙向迴圈鍊錶

4.總結

struct list_node

;

首先了解鍊錶的組成部分:

說明:頭節點:在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點(首節點)的位址。頭結點的作用是使所有鍊錶(包括空表)的頭指標非空。

#include

#include

#include

struct list_node //定義結構體

typedef

struct list_node list_single ;

intmain

(void

)memset

(node,0,

sizeof

(list_single));

//清空

node->data =

123;

//給鍊錶節點的資料域賦值

node->next =

null

;//將鍊錶的指標域指向空

printf

("node_data=%d\n"

,node->data)

;printf

("node_next=%d\n"

,node->next)

;free

(node)

;return0;

}

執行結果:

該鍊錶就是:

詳細解釋可以參考:malloc函式詳解

void looklist()

struct list_node *newp =head;

//定義乙個臨時變數指向頭節點

//通過迴圈遍歷整個鍊錶並輸出

while(newp !=

null )

struct node*

findnode

(int a )

return

null

;//未找到

}

void addlist(int data)

else

//第二種鍊錶不為空

end = newp; //尾結點始終指向最後乙個

}

void delectend()

//第二種鍊錶不為空

//只有乙個節點

if(head == end)

else

//多個節點

//釋放尾巴

free

(end)

;//再將倒數第二個設為end

end=temp;

//尾巴指標為null

end->next=

null;}

}

void delecthead()

head=head->next;

//頭的第二個節點變成新的頭

free

(newp)

;//將舊頭空間釋放

}

void delectlist(int data)

//不為空,則遍歷鍊錶找到這個節點

struct list_node* newp = head

while

(newp !=

null

) newp = newp->next;}if

(null

== newp)

if(head==end)

//只有乙個節點

else

if(head->next==end)

//有兩個節點

else

if(newp==head)

}else

//多個節點時

pt->next=newp->next;

free (newp);}}}

如圖所示

void

addlist

(int index,

int data)

struct list_node* pt =

findnode

(index)

;//呼叫之前定義的查詢if(

null

==pt)

//沒有此節點

//若有節點,則建立臨時節點

struct list_node* newp =

(struct node *

)malloc

(sizeof

(struct node));

newp->data=data;

newp->next=

null;if

(pt == end)

//末端插入

else

//中間插入

在中間也類似。

#include

#include

#include

struct list_node

struct list_node* head=

null

;struct list_node* end =

null

;//定義鍊錶頭尾指標

void main (

)

1.單向迴圈鍊錶

就是表的最後乙個元素指向了頭節點而不是為空(null)

2.雙向迴圈鍊錶

相當於兩個單向迴圈鍊錶的疊加。

通過一段時間leetcode**的刷題,發現了自己的很多問題,之前學習的基礎知識不夠紮實,在刷題有很多時候一道題需要很長的時間,而且很多答案不是特別看得懂,思路不清晰,所以打算整理一下一些資料結構方面的基礎。

資料結構學習筆記 鍊錶

表示式的計算 表示式的計算涉及到棧的操作 對於表示式 a b c d e f 演算法 用到兩個棧,分別是符號棧和運算元棧。輸入表示式時,為了表示表示式輸入完畢,在表示式的最後加上 號,也就是說輸入的表示式為 a b c d e f 首先設定各個符號的優先順序,和 的優先順序為0,也就是最低的 和 的...

資料結構學習 鍊錶

將從下面4部分進行介紹 首先介紹鍊錶是什麼,然後介紹為什麼定義鍊錶,接著是鍊錶的分類,最後簡單介紹一下鍊錶結點的插入與刪除方法。首先,在介紹鍊錶之前,我們先介紹一下什麼是順序儲存結構。我們知道資料在計算機中的儲存就像貨物在倉庫中的儲存一樣,不但占用一定的空間,還要有乙個標示儲存位置的位址。計算機通過...

資料結構學習 鍊錶

由於不必須按順序儲存,鍊錶在插入的時候可以達到o 1 的複雜度,比另一種線性表順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要o n 的時間,而線性表和順序表相應的時間複雜度分別是o logn 和o 1 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...