// 單鏈表的建立
// 單鏈表的建立可以用頭插法或者尾插法。頭插法是指建立單鏈表時, 總是將新節點插入到當前鏈表的表頭。
// 頭插法常用在將一個已存在的鏈表逆序。
1 #include <iostream>
2
3 using std::cout;
4 using std::endl;
5
6 struct Item{
7 char c;
8 Item *next;
9 };
10 Item *Routine1(Item *x){
11 Item *prev = NULL, *curr = x;
12 while (curr) {
13 Item *next = curr->next;//將當前結點的后續結點賦值給next
14 curr->next = prev;//修改當前結點的后續結點指向prev
15 prev=curr;//此時prev向前移動賦值為curr
16 curr=next;//curr 賦值為 curr->next 當時保存的后續結點的指針
17 }
18 return prev;//最后prev指向的就是移動到最后一個節點的curr,而curr->next == NULL;
19 }
20
21 void Routine2(Item *x){
22 Item* curr = x;
23 while (curr) {
24 cout << curr->c << " ";
25 curr=curr->next;
26 }
27 cout << endl;
28
29 }
30
31 int main(void ){
32 Item *x,
33 d = {'d', NULL},
34 c = {'c', &d},
35 b = {'b', &c},
36 a = {'a', &b};
37 Routine2(&a);
38 x = Routine1(&a);
39 Routine2(x);
40 return 0;
41 }
// output: a b c d
d c b a