1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 |
#include <iostream> using
namespace std; struct
Node { Node *next; int
elem; }; void
creatList(Node* &head) { head = new
Node; int
elem; cin>>elem; head->elem = elem; Node *p = head; while (cin>>elem&&elem) { Node *q = new
Node; q->elem = elem; p->next = q; p = p->next; } p->next = NULL; } void
printList(Node* &head) { cout<<head->elem<< " " ; Node *p = head->next; while (p) { cout<<p->elem<< " " ; p = p->next; } cout<<endl; } void
removeX(Node* &head, int
x) { Node *p; if (head == NULL) return ; else
if (head->elem == x) { p = head; head = head->next; free (p); removeX(head, x); } else removeX(head->next, x); } Node* getElem(Node* head, int
i) { int
j = 1; Node *p = head; if (head==NULL) return
head; while (p&&j<i) { j++; p = p->next; } return
p; } void
insertNode(Node* &head, int
i, int data) { Node* p = getElem(head, i-1); Node* q = new
Node; q->elem = data; q ->next = p ->next; p ->next = q; } void
deleteNode(Node* &head, int
i) { Node* p = getElem(head, i-1); Node* q = p->next; p->next = q->next; free (q); } void
reverseList(Node* &head) { if (head == NULL||head ->next == NULL) return
; Node *pre = head; Node *cur = head->next; Node *nex = NULL; while (cur) { nex = cur -> next; cur ->next = pre; pre = cur; cur = nex; } head->next = NULL; head = pre; } int
main() { Node *p; creatList(p); printList(p); //removeX(p, 4); insertNode(p, 2, 100); printList(p); cout<<getElem(p, 3)->elem<<endl; deleteNode(p, 2); printList(p); reverseList(p); printList(p); return
0; } |
原文地址:http://www.cnblogs.com/cliviazhou/p/3777510.html