-
Notifications
You must be signed in to change notification settings - Fork 0
/
LinkedList.cpp
148 lines (97 loc) · 2.67 KB
/
LinkedList.cpp
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
using namespace std;
class LinkedList {
struct person {
struct person* next;
int val;
};
struct person* head;
public:
LinkedList(int data){
head = createPerson(data);
}
void printList(){
struct person* temp = head;
while(temp != NULL){
cout << temp->val << " ";
temp = temp ->next;
}
cout << endl;
cout << "====================" << endl;
}
struct person* createPerson(int value) {
struct person *temp=new person;
temp->val=value;
temp->next=NULL;
return temp;
};
void appendPerson(int data){
struct person *temp = createPerson(data);
struct person *curr = head; // Pointer to head
while(curr->next != NULL){
curr = curr->next;
}
curr->next = temp;
};
void insertBeginning(int data){
struct person* temp = createPerson(data);
temp->next = head;
head = temp; // This step is important
};
void insertPosition(int pos, int value) {
struct person *pre = new person;
struct person *cur = new person;
struct person *temp= createPerson(value);
cur=head;
for(int i = 1; i < pos; i++){
pre = cur;
cur = cur->next;
}
pre->next = temp;
temp->next = cur;
};
void deleteBeginning(){
struct person* temp = new person;
temp = head;
head = head->next;
delete temp;
};
void deleteLast() {
struct person *current=new person;
struct person *previous = new person;
current = head;
while(current->next!=NULL) {
previous=current;
current=current->next;
}
previous->next=NULL;
delete current;
};
void deletePos(int pos){
struct person *current = new person;
struct person *previous = new person;
current = head;
for(int i = 1; i < pos; i++) {
previous = current;
current = current->next;
}
previous->next=current->next;
delete current;
};
void reverse(){
struct person *current = head;
struct person *prev = NULL;
struct person *next = NULL;
while (current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev; //Move head to the end of the list
};
};
int main() {
LinkedList* list = new LinkedList(8);
return 0;
}