-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlinkedListC++.cpp
More file actions
120 lines (112 loc) · 2.65 KB
/
linkedListC++.cpp
File metadata and controls
120 lines (112 loc) · 2.65 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
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
#include <iostream>
using namespace std;
class LinkedList {
private:
int data;
LinkedList * node;
friend class Driver_Class;
};
class Driver_Class {
public:
char * error = "error\n";
LinkedList * createNode(int);
void printList(LinkedList * temp) {
while (temp != NULL) {
cout << temp -> data << endl;
temp = temp -> node;
}
}
inline LinkedList * setNode(LinkedList * temp) {
return temp -> node;
}
LinkedList *DeleteFirstNode(LinkedList *start){
LinkedList *tempStart;
tempStart=start;
if(start!=NULL){
start=start->node;
free(tempStart);
return start;
}
else{
cout<<"The list is empty"<<endl;
}
}
void DeleteSpecificNode(int data,LinkedList *start){
LinkedList *tempStart,*tempTempStart;
int count = 0;
tempStart = start;
if(start->data==data){
start=start->node;
free(tempStart);
return;
}
tempTempStart= start;
while(tempStart->data!=data){
tempStart = tempStart->node;
if(count!=0){
tempTempStart=tempTempStart->node;
}
count++;
}
tempStart=tempStart->node;
tempTempStart->node=tempStart;
// free(tempStart);
}
LinkedList setNumber(LinkedList* , int , Driver_Class&);
LinkedList *ReverseLinkedList(LinkedList *);
};
LinkedList Driver_Class::setNumber(LinkedList *node, int n, Driver_Class &d1){
for (int i = 1; i <= n; i++) {
node -> node = d1.createNode(i * 12);
node = d1.setNode(node);
}
}
LinkedList * Driver_Class::createNode(int data1) {
LinkedList * temp;
try {
temp = new LinkedList;
if (temp) {
temp -> data = data1;
temp -> node = NULL;
return temp;
} else {
throw error;
}
} catch (char * err) {
cout << "Cannot create Node: "<<err<< endl;
}
}
LinkedList *Driver_Class::ReverseLinkedList(LinkedList *start){
LinkedList *temp1, *temp2;
temp1=temp2=NULL;
while(start!=NULL){
temp2=start->node;
start->node=temp1;
temp1=start;
start = temp2;
}
start=temp1;
}
int main() {
Driver_Class *d1;
LinkedList * node, * start, * temp;
node = d1->createNode(11);
start = node;
d1->setNumber(node, 10, *d1);
temp = start;
d1->printList(temp);
system("pause");
system("cls");
start=d1->DeleteFirstNode(start);
temp=start;
d1->printList(temp);
system("pause");
system("cls");
d1->DeleteSpecificNode(72,temp);
d1->printList(temp);
system("pause");
start = d1->ReverseLinkedList(start);
temp=start;
d1->printList(temp);
system("pause");
}