c實現單向鍊錶

2022-07-21 00:51:20 字數 1691 閱讀 3600

實現乙個單向鍊錶的:建立、插入、刪除、排序(冒泡)、逆向、搜尋中間節點 

#include #include 

#include

using

namespace

std;

typedef

struct

student

node;

//建立鍊錶

node *create()

else

}//4. 釋放頭節點

p->next =null;

p =head;

head = head->next;

free

(p);

p =null;

//5. 返回鍊錶

return

head;}//

計算鍊錶長度

int length(node *head)

printf(

"%d\n

", n);

//3. 返回計數

returnn;}

//顯示

void show(node *head)

printf("\n

");}//

插入節點(公升序)

node *insert (node *head, int

num)

//4. 插入節點

if (p0->data > p1->data) //

末尾

else

else

//中間

}//5. 返回頭

return

head;}//

刪除鍊錶中指定節點

node *del(node *head, int

num)

//3. 刪除節點

if (num != p1->data)

else

else

}//4. 返回頭

return

head;}//

鍊錶公升序排序(冒泡演算法)

node *sort(node *head)

//2. 獲取鍊錶長度

n =length(head);

//3. 排序

for (int j=1; j//

遍歷所有節點

p = p->next;}}

//4. 返回頭

return

head;}//

鍊錶逆置

node *reverse(node *head)

//2. 逆置

p1 =head;

p2 = p1->next;

while(p2 !=null)

//3. 調換頭尾節點

head->next = null; //

轉置完後頭節點成為尾節點

head = p1; //

轉置完後尾節點成為頭節點

//4. 返回頭

return

head;}//

搜尋鍊錶中間節點

//演算法:以步長2和1單位同時遍歷鍊錶,步長2到末尾,步長1到中間

void searchmid(node *head, node *mid)

printf(

"mid:%d\n

", mid->data);

}int

main()

C實現單向鍊錶(創造鍊錶)

include include typedef struct nodenode,pnode pnode create list void intmain pnode create list void pnode ptail phead 首尾同一節點 鍊錶 頭尾節點都應該在最開始就定義出來,頭就是第乙...

單向鍊錶的實現C

鍊錶是常用的一種資料結構,如何建立鍊錶 增 刪 查詢等功能是本文討論的內容。首先,鍊錶需要兩個指標,乙個是頭指標是固定不變的,乙個是移動變化的指標。1 為什麼要頭指標?原因是單向列表中的資料結構包含的只有下乙個資料的指標,這樣就說明了,單向鍊錶是不可逆向進行操作。所有的操作都需要正向去操作。這時我們...

C語言單向鍊錶實現

include include typedef struct node listnode typedef listnode linklist 帶頭節點的單鏈表 初始化單鏈表只有頭節點 void initlinklist linklist linklist 建立乙個單鏈表 linklist creat...