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 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...