File tree Expand file tree Collapse file tree 1 file changed +110
-0
lines changed
Data Structures/Linked Lists/Circular Doubly Linked Lists Expand file tree Collapse file tree 1 file changed +110
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments