diff --git a/deletion_in_linkedlist.cpp b/deletion_in_linkedlist.cpp index 52af92e..460f461 100644 --- a/deletion_in_linkedlist.cpp +++ b/deletion_in_linkedlist.cpp @@ -72,7 +72,7 @@ void delete_node(int num,int del) while(dellink; i=i+1; diff --git a/doubly_linked_list.cpp b/doubly_linked_list.cpp index efc4459..4ed20f1 100644 --- a/doubly_linked_list.cpp +++ b/doubly_linked_list.cpp @@ -121,7 +121,7 @@ void insertbegin(int s) void insertend(int s) { struct Node *temp=head; - struct Node*prev1; + struct Node* prev1; while(temp!=NULL) { prev1=temp; @@ -140,34 +140,33 @@ void insertend(int s) void delete_node(int del) { struct Node *temp=head; - struct Node *prev1; if (head->data==del) { - temp=head->next; - temp->prev=NULL; - free(temp); + if(head->next==NULL){ + free(temp); + head=NULL; } - else - temp=temp->next; - if(temp->next!=NULL) - { - while(temp->data!=del) - { - prev1=temp; - temp=temp->next; + else{ + head->next->prev=NULL; + head=head->next; + free(temp); } - - struct Node *temp1=temp->next; - prev1->next=temp->next; - temp1->prev=temp->prev; - free(temp); } - else - { - temp=temp->prev; - temp->next==NULL; + else{ + while(temp->next!=NULL){ + if(temp->data==del){ + temp->prev->next=temp->next; + temp->next->prev=temp->prev; + free(temp); + } + else temp=temp->next; + } + if(temp->data==del){ + temp->prev->next=NULL; free(temp); } + } + display(); }