-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete_from_doubly_LL.cpp
More file actions
85 lines (66 loc) · 1.24 KB
/
delete_from_doubly_LL.cpp
File metadata and controls
85 lines (66 loc) · 1.24 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
#include<bits/stdc++.h>
using namespace std;
class Node{
public:
Node *prev;
int data;
Node *next;
};
Node *head;
create_dub_ll(int A[],int s){
head=new Node;
Node *temp;
Node *last;
head->prev= NULL;
head->data=A[0];
head->next=NULL;
last=head;
for (int i = 1; i < s; i++)
{
temp = new Node;
temp->prev=head;
temp->data=A[i];
temp->next=NULL;
last->next=temp;
last=temp;
}
}
// delete at a given index
void delete_LL(int ind){
Node* p;
p=head;
if(ind==0){
head=head->next;
delete p;
if(head)
head->prev=NULL;
}
else{
for(int i=0 ;i<ind-1;i++){
p=p->next;
}
p->prev->next=p->next;
if(p->next)
p->next->prev=p->prev;
delete p;
}
}
Node display(Node *p){
while (p!=NULL)
{
cout<<p->prev<<"-"<<p->data<<"-"<<p->next<<"-> ";
p=p->next;
}
cout<<endl;
}
int main(){
int A[]={1,2,3,4,5,6};
int size=(sizeof(A)/sizeof(A[0]));
create_dub_ll(A,size);
display(head);
delete_LL(2);
display(head);
delete_LL(0);
display(head);
return 0;
}