C 單鏈表基本操作分析與實現

2021-07-25 04:30:30 字數 3064 閱讀 1406

鍊錶

鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。 相比於線性表順序結構,鍊錶比較方便插入和刪除操作。

建立頭節點

手動new乙個新的node,將node的next置為null即可。

從頭插入乙個新的節點

手動new出乙個新的節點p,使p的next的指向head->next所指向的位址,然後將head->next從新指向p即可。

刪除指定節點

先遍歷到指定節點的前乙個節點,然後通過將前乙個節點的next指標指向指定節點的下乙個節點,達到懸空指定節點的效果,然後刪除指定節點即可。**請參照後面的完整**。

修改指定節點

遍歷到指定節點的位置,將其data修改為要修改的值即可。修改**請參考後面的完整**。

鍊錶反轉

定義三個臨時節點指向頭結點之後的第1個節點p,第2個節點q和第3個節點m。將p->next置為空,然後將q->next = p,然後將p向後移動乙個節點,即p = q,最後將q向後移動乙個節點,即q = m,最後把m向後移動乙個節點,即m = m->next;依此類推直到m等於null,然後將q->next = p,最後將head->next指向q(即目前第乙個節點疑,也就是原本最後的乙個節點)。

通過三個節點達到從頭開始逐個逆序的目的。反轉**請參考後面的完整**。

完整**如下:

1//2

list4//

5//created by scandy_yuan on 13-1-6.6//

7//89 #include 10

using

namespace

std;

1112

class

list

15 ~list()

16//

建立頭結點

17void

create_list();

18//

插入函式

19void insert(const

int&d);

20//

在指定位置插入

21void insert_pos(const

int& d,const

int&d1);

22//

刪除指定資料的節點

23void erase(const

int&d);

24//

修改指定資料

25void updata(const

int& d,const

int&d1);

26//

反轉鍊錶函式

27void

reverse();

28//

列印29

void

print();

30private:31

//節點結構

32struct

node

36};

37 node * head;//

頭節點38

//清理鍊錶函式

39void

clear()47}

48//

查詢資料d的上乙個節點位置的函式

49//

為了方便後面刪除操作

50 node* find(const

int&d)

56return

p;57}58

};59

60//

建立頭結點

61void

list::create_list()

6265

//從頭插入乙個節點

66void list::insert(const

int&d)

6772

//列印函式

73void

list::print()

7478}79

//在d位置之前插入d1

80void list::insert_pos(const

int& d,const

int&d1)

8187

88//

刪除89

void list::erase(const

int&d)

90101

102//

修改指定資料

103void list::updata(const

int& d,const

int&d1)

104108

109//

反轉鍊錶

110void

list::reverse()

111123

//將最後乙個節點逆序

124 q->next =p;

125//

將頭從新指向新的的第1個節點(之前的最後乙個節點)

126 head ->next =q;

127}

128129

int main(int argc, const

char *argv)

130

C 單鏈表基本操作分析與實現

鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。相比於線性表順序結構,鍊錶比較...

單鏈表及基本操作與實現

單鏈表的基本操作及基本實現如下 include stdio.h include stdlib.h typedef int elemtype typedef struct lnodelnode,linklist linklist initlist linklist l 初始化鍊錶 bool listi...

C 實現單鏈表的基本操作

結點類 關鍵處在c語言中用指標來指向下乙個節點,c 是物件導向的,用節點類的乙個屬性 next屬性 來指向下乙個節點物件 public class linknode set private linknodenext public linknodenext set endregion public l...