// 单链表的建立
// 单链表的建立可以用头插法或者尾插法。头插法是指建立单链表时, 总是将新节点插入到当前链表的表头。
// 头插法常用在将一个已存在的链表逆序。
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