Skip to content

Commit 8740598

Browse files
Singly and Doubly Link List
0 parents  commit 8740598

File tree

2 files changed

+376
-0
lines changed

2 files changed

+376
-0
lines changed

DLL.cpp

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
// Doubly Link List
2+
// -------------------------
3+
// 1. Insert at Beginning
4+
// 2. Insert at End
5+
// 3. Insert in Middle
6+
// 4. Delete at Beginning
7+
// 5. Delete at End
8+
// 6. Searching
9+
// 7. Simple Display
10+
// 8. Reverse Display
11+
12+
#include<iostream>
13+
#include<string>
14+
using namespace std;
15+
16+
struct node{
17+
int data;
18+
node* next;
19+
node* prev;
20+
};
21+
22+
node* head = NULL;
23+
node* current = NULL;
24+
node* tail = NULL;
25+
26+
// Insert at begining
27+
28+
void insertBeg(int item){
29+
node* newnode = new node;
30+
newnode->data = item;
31+
newnode->next = head;
32+
newnode->prev = NULL;
33+
34+
if(head!=NULL){
35+
head->prev = newnode;
36+
}
37+
38+
head = newnode;
39+
40+
if (tail == NULL)
41+
{
42+
tail = newnode;
43+
}
44+
}
45+
46+
// Insert at End
47+
48+
void insertEnd(int item) {
49+
node* newnode = new node;
50+
newnode->data = item;
51+
newnode->next = NULL;
52+
newnode->prev = NULL;
53+
54+
if (head == NULL) {
55+
head = newnode;
56+
tail = newnode;
57+
} else {
58+
current = head;
59+
while (current->next != NULL) {
60+
current = current->next;
61+
}
62+
63+
current->next = newnode;
64+
newnode->prev = current;
65+
tail = newnode;
66+
}
67+
}
68+
69+
// Insert in midddle
70+
71+
void insertMiddle(int item) {
72+
node* newnode = new node;
73+
newnode->data = item;
74+
newnode->next = NULL;
75+
newnode->prev = NULL;
76+
77+
if (head == NULL) {
78+
head = newnode;
79+
tail = newnode;
80+
return;
81+
}
82+
83+
int mid;
84+
int c = 0;
85+
current = head;
86+
87+
while (current != NULL) {
88+
current = current->next;
89+
c++;
90+
}
91+
92+
mid = c / 2;
93+
94+
current = head;
95+
96+
for (int i = 1; i < mid; i++) {
97+
current = current->next;
98+
}
99+
100+
newnode->next = current->next;
101+
newnode->prev = current;
102+
if (current->next != NULL) {
103+
current->next->prev = newnode;
104+
}
105+
current->next = newnode;
106+
107+
if (newnode->next == NULL) {
108+
tail = newnode;
109+
}
110+
}
111+
112+
// Delete at begining
113+
114+
void deleteBeg() {
115+
if (head == NULL) {
116+
117+
cout << "List is Empty! Can't Delete!" << endl;
118+
}
119+
120+
node* temp = head;
121+
122+
if (head->next != NULL) {
123+
head->next->prev = NULL;
124+
}
125+
126+
head = head->next;
127+
128+
delete temp;
129+
}
130+
131+
// Delete at end
132+
133+
void deleteEnd() {
134+
if (head == NULL) {
135+
cout << "List is Empty! Can't Delete!" << endl;
136+
}
137+
138+
if (head->next == NULL) {
139+
delete head;
140+
head = tail = NULL;
141+
return;
142+
}
143+
144+
node* temp = tail->prev;
145+
146+
tail = temp;
147+
temp->next = NULL;
148+
149+
delete current;
150+
}
151+
152+
// Simple display
153+
154+
void display(){
155+
current = head;
156+
if(current==NULL){
157+
cout << "List is Empty!" << endl;
158+
}
159+
else{
160+
while(current!=NULL){
161+
cout << current->data << "->";
162+
current = current->next;
163+
}
164+
}
165+
cout << endl;
166+
}
167+
168+
// Reverse display
169+
170+
void reverseDisplay(){
171+
if(head==NULL){
172+
cout << "List is Empty!" << endl;
173+
}
174+
else{
175+
current = tail;
176+
while(current!=NULL){
177+
cout << current->data << "<-";
178+
current = current->prev;
179+
}
180+
}
181+
182+
cout << endl;
183+
}
184+
185+
// Searching
186+
187+
void search(int item){
188+
current = head;
189+
bool found = false;
190+
while(current!=NULL){
191+
if(item == current->data){
192+
found = true;
193+
break;
194+
}else{
195+
current = current->next;
196+
}
197+
}
198+
199+
if(found){
200+
cout << "Value Founded!" << endl;
201+
}else{
202+
cout << "Value not found!" << endl;
203+
}
204+
}
205+
206+
// Main Function
207+
208+
int main(){
209+
insertBeg(1);
210+
insertBeg(2);
211+
insertBeg(3);
212+
insertBeg(4);
213+
insertBeg(5);
214+
insertEnd(7);
215+
insertMiddle(8);
216+
display();
217+
218+
deleteBeg();
219+
deleteEnd();
220+
221+
display();
222+
reverseDisplay();
223+
224+
cout << endl;
225+
search(9);
226+
}
227+
228+
229+
230+
231+

SLL.cpp

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
// Singly Link List
2+
3+
#include<iostream>
4+
#include<string>
5+
using namespace std;
6+
7+
struct node{
8+
int data;
9+
node* link;
10+
};
11+
12+
node* head = NULL;
13+
node* current = NULL;
14+
15+
void insertBeg(int item){
16+
node* newnode = new node;
17+
newnode->data = item;
18+
newnode->link = head;
19+
head = newnode;
20+
}
21+
22+
void insertMiddle(int item){
23+
24+
node* newnode = new node;
25+
newnode->data = item;
26+
newnode->link = NULL;
27+
int mid;
28+
int c = 0;
29+
current = head;
30+
while(current!=NULL){
31+
current = current->link;
32+
c++;
33+
}
34+
35+
mid = c/2;
36+
37+
current = head;
38+
39+
for(int i=1; i < mid; i++){
40+
current = current->link;
41+
}
42+
43+
node* add;
44+
add = current->link;
45+
current->link = newnode;
46+
newnode->link = add;
47+
48+
}
49+
50+
void insertEnd(int item){
51+
52+
node* newnode = new node;
53+
newnode->data = item;
54+
newnode->link = NULL;
55+
56+
if(head==NULL){
57+
head = newnode;
58+
}
59+
else{
60+
current = head;
61+
while(current->link!=NULL){
62+
current = current->link;
63+
}
64+
current->link = newnode;
65+
}
66+
}
67+
68+
void deleteBeg(){
69+
if(head==NULL){
70+
cout << "List is Empty!" << endl;
71+
}
72+
else{
73+
node *temp;
74+
temp = head;
75+
head = head->link;
76+
delete temp;
77+
}
78+
}
79+
80+
void deleteEnd(){
81+
82+
if(head==NULL){
83+
cout << "List is Empty!" << endl;
84+
}
85+
else{
86+
node* temp;
87+
current = head;
88+
while(current->link!=NULL){
89+
temp = current;
90+
current = current->link;
91+
}
92+
temp->link = NULL;
93+
delete current;
94+
}
95+
96+
97+
}
98+
99+
void search(int item) {
100+
current = head;
101+
bool found = false;
102+
103+
while (current != NULL) {
104+
if (current->data == item) {
105+
found = true;
106+
break;
107+
} else {
108+
current = current->link;
109+
}
110+
}
111+
112+
if (found) {
113+
cout << "Value Found!" << endl;
114+
} else {
115+
cout << "Value not Found!" << endl;
116+
}
117+
}
118+
119+
void display(){
120+
121+
current = head;
122+
while(current!=NULL){
123+
cout << current->data << "->";
124+
current = current->link;
125+
}
126+
127+
cout << endl;
128+
}
129+
130+
int main(){
131+
insertBeg(1);
132+
insertBeg(2);
133+
insertBeg(3);
134+
insertBeg(4);
135+
insertBeg(5);
136+
insertEnd(6);
137+
insertMiddle(7);
138+
display();
139+
140+
deleteBeg();
141+
deleteEnd();
142+
display();
143+
144+
search(1);
145+
}

0 commit comments

Comments
 (0)