Skip to content

Commit de2c12e

Browse files
authored
Merge pull request #191 from kiruba-r11/feature-1
Added Delete At the Head of the Doubly Linked Lists
2 parents 006da04 + 01c956e commit de2c12e

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
3+
This is a Circular Doubly Linked List program which deletes a Node at the head of the Linked Lists.
4+
Since, it is a Ciruclar Doubly Linked List, both the forward and backward traversal is also possible.
5+
6+
*/
7+
8+
9+
#include <iostream>
10+
11+
using namespace std;
12+
13+
/*
14+
15+
Node definition:
16+
1. Pointer to previous node.
17+
2. Integer Data
18+
3. Pointer to next node.
19+
20+
*/
21+
22+
class dcll_node {
23+
public:
24+
dcll_node* prev;
25+
int data;
26+
dcll_node* next;
27+
};
28+
29+
void createDCLL(dcll_node* &head) {
30+
31+
dcll_node* temp = head;
32+
33+
int choice;
34+
35+
do {
36+
37+
int data;
38+
39+
cout << "Enter Data : ";
40+
cin >> data;
41+
42+
dcll_node* newNode = new dcll_node();
43+
newNode->data = data;
44+
newNode->prev = NULL;
45+
newNode->next = NULL;
46+
47+
if(head == NULL) {
48+
head = newNode;
49+
temp = head;
50+
head->next = head;
51+
head->prev = head;
52+
} else {
53+
temp->next = newNode;
54+
newNode->prev = temp;
55+
temp = newNode;
56+
newNode->next = head;
57+
head->prev = newNode;
58+
}
59+
60+
cout << "Do you want to continue? (1/0) : ";
61+
cin >> choice;
62+
63+
} while(choice == 1);
64+
65+
}
66+
67+
void delete_at_begin(dcll_node* &head) {
68+
if(head == NULL || head->next == head) {
69+
head = NULL;
70+
delete head;
71+
return;
72+
}
73+
74+
dcll_node* temp = head;
75+
head = head->next;
76+
head->prev = temp->prev;
77+
temp->prev->next = head;
78+
delete temp;
79+
}
80+
81+
void display(dcll_node* head) {
82+
83+
cout << "The elements are : ";
84+
dcll_node* temp = head;
85+
86+
do {
87+
88+
cout << temp->data << " ";
89+
temp = temp->next;
90+
91+
} while(temp != head);
92+
cout << endl;
93+
}
94+
95+
int main() {
96+
97+
dcll_node* head = NULL;
98+
99+
createDCLL(head);
100+
101+
cout << "Before Deletion : " << endl;
102+
display(head);
103+
104+
delete_at_begin(head);
105+
106+
cout << "After Deletion : " << endl;
107+
display(head);
108+
109+
return 0;
110+
}

0 commit comments

Comments
 (0)