1 #include2 #include3#define len sizeof(struct node)
45 typedef struct
node*linklist; //
定義鍊錶的結構體910
//初始化鍊錶
11linklist initlist()
1819
//在鍊錶末尾新增乙個結點
20void addnode(linklist list, int
num) //
用while迴圈使指標指向最後乙個結點的位置
26 p1 = (struct node *) malloc (len); //
定義乙個新的實際結點賦值,並使鍊錶原本的最後乙個結點的next域指向它
27 p1->elem =num;
28 p1->next =null;
29 p2->next =p1;30}
3132
//檢視鍊錶指定結點,存在就返回這個結果,否則返回null
33 linklist find(linklist list, int
pos)
42 p = p->next; //
將指標後移以遍歷鍊錶到pos位置43}
44return
p;45}46
47//
在鍊錶指定位置插入乙個結點
48bool insert(linklist list, int num, int
pos) else60}
6162
//刪除指定位置結點
63bool del(linklist list, int
pos) else75}
7677
//遍歷鍊錶
78void
print(linklist list)
86 printf("\n"
);87}88
89//
求鍊錶長度
90int
length(linklist list)
98return
len;99}
100101
//得到鍊錶指定位置的元素值
102int getelem(linklist list, int
pos)
110 p = p->next;
111}
112return p->elem;
113}
114115
//判斷鍊錶是否為空
116bool
isempty(linklist list) else
122}
123124
//判斷鍊錶是否包含指定元素
125bool isincluded(linklist list, int
num)
132 p = p->next;
133}
134return
false
;135
}136
137//
判斷指定元素在鍊錶中的位置,如果沒有該元素則返回null
138int locateelem(linklist list, int
num)
147 p1 = p1->next;
148}
149}
150151
if(pos > 0
) else
156}
157158
//重置鍊錶,只保留頭結點
159void
clearlist(linklist list)
168}
169170
//銷毀鍊錶,先重置鍊錶,然後釋放頭結點
171void
destroylist(linklist list)
175176
void
main()
218}
219break
;220
}221
case3:
231 result =getelem(mylist, pos);
232if(result !=null) else
237break
;238
}239
case4:
249 printf("
\n請輸入要插入的值:");
250 scanf("
%d", &num);
251252
if(insert(mylist, num, pos)) else
258break
;259
}260
case5:
269270
if(del(mylist, pos)) else
276break
;277
}278
case6:
279 printf("
\n鍊錶的長度為%d
", length(mylist));
280break
;281
case7:
282if
(isempty(mylist)) else
287break
;288
case
8: else
297break
;298
}299
case
9: else
308break
;309
}310
case10:
311clearlist(mylist);
312break
;313
case11:
314destroylist(mylist);
315break
;316
case12:
317if(!mylist) else
324}
325}
326getchar();
327 }
C語言實現單鏈表的節點插入(帶頭結點)
我在之前一篇部落格 c語言實現單鏈表 不帶頭結點 節點的插入 中詳細實現了如何在乙個不帶頭結點的單鏈表中進行節點的插入。但是在實際應用中,帶頭結點的鍊錶更為常用,更為方便。今天我們就要來使用帶頭結點的單鏈表進行節點的插入。示例 上傳至 核心 如下 node insertnode node pnode...
C語言實現單鏈表節點的刪除(帶頭結點)
我在之前一篇部落格 c語言實現單鏈表節點的刪除 不帶頭結點 中具體實現了怎樣在乙個不帶頭結點的單鏈表的刪除乙個節點,在這一篇部落格中我改成了帶頭結點的單鏈表。演示樣例上傳至 刪除型別有兩種 1 刪除某個位置pos的節點 2 推斷x值是否在鍊錶中,若存在則刪除該節點 核心 例如以下 刪除某個位置pos...
C語言實現單鏈表的逆序列印(帶頭結點)
我在之前一篇部落格 c語言實現單鏈表 不帶頭結點 的逆序列印 中詳細實現了對乙個不帶頭節點的鍊錶的逆序列印,整體思路也是非常的簡單,也就是依次遍歷原鍊錶,然後把取出的節點用頭插法建立乙個新的鍊錶,新鍊錶就是原鍊錶的逆序。這篇部落格我會來實現使用帶頭結點的鍊錶實現逆序,思路同上述是一樣的。上傳至 核心...