-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsinglelist.cpp
More file actions
80 lines (68 loc) · 1.38 KB
/
Copy pathsinglelist.cpp
File metadata and controls
80 lines (68 loc) · 1.38 KB
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
#include "singlelist.h"
address allocate(infotype x){
address p = new elmlist;
info(p) = x;
next(p) = NULL;
return p;
}
void deallocate(address &P){
delete P;
P = NULL;
}
void createList(List &L){
first(L) = NULL;
}
void printInfo(List L){
address p = first(L);
while (p != NULL){
cout << info(p) << ", ";
p = next(p);
}
cout << endl;
}
void reverseList(List &L){
List new_L;
createList(new_L);
while (first(L) != NULL) {
address p;
deleteFirst(L, p);
insertFirst(new_L, p);
}
L = new_L;
}
void insertFirst(List &L, address P){
next(P) = first(L);
first(L) = P;
}
void insertLast(List &L, address P){
address po = first(L);
if (po != NULL){
while (next(po) != NULL){
po = next(po);
}
next(po) = P;
} else {
insertFirst(L, P);
}
}
void deleteFirst(List &L, address &P){
if (first(L) != NULL){
P = first(L);
first(L) = next(P);
next(P) = NULL;
}
}
void deleteLast(List &L, address &P){
if (first(L) != NULL){
if (next(first(L)) == NULL){
deleteFirst(L, P);
} else {
address po = first(L);
while (next(next(po)) != NULL){
po = next(po);
}
P = next(po);
next(po) = NULL;
}
}
}