Doublylinklist

2,418 views
2,356 views

Published on

1 Comment
6 Likes
Statistics
Notes
No Downloads
Views
Total views
2,418
On SlideShare
0
From Embeds
0
Number of Embeds
428
Actions
Shares
0
Downloads
0
Comments
1
Likes
6
Embeds 0
No embeds

No notes for slide

Doublylinklist

  1. 1. Presentation on doubly linked list:- Presented by:- RITU NAMDEO M.C.A. 2 ND SEM ‘ B’ SEC. MITM INDORE
  2. 2. Doubly linked list <ul><li>Doubly-linked list(DLL) is a more sophisticated kind of linked list. </li></ul><ul><li>Each has three parts ,two links parts and one data parts. </li></ul><ul><li>One points to previous node and one points to next node. </li></ul><ul><li>There are two pointer variable head and tail. </li></ul><ul><li>Head points to the first element of list and tail points last element of list. </li></ul>
  3. 3. REPRESENTATION OF DLL <ul><li>PPPP </li></ul>D D P D N D Head Tail
  4. 4. DLL OPERATIONS: <ul><li>INITIALIZING </li></ul><ul><li>CREATING A NODE </li></ul>
  5. 5. Initializing <ul><li>Tail </li></ul>Head
  6. 6. Code <ul><li>initialization >>.. </li></ul><ul><li>initialize(node **head,node **tail){ </li></ul><ul><li> *head=NULL; </li></ul><ul><li> *tail=NULL; </li></ul><ul><li> } </li></ul>
  7. 7. Creating a node data ptr tail
  8. 8. Function for creating a node <ul><li>node* create(int item){ </li></ul><ul><li> node *ptr; </li></ul><ul><li> ptr=(node*)malloc(sizeof(node)); </li></ul><ul><li> ptr->item=item; </li></ul><ul><li> ptr->prev=NULL; </li></ul><ul><li> ptr->next=NULL; </li></ul><ul><li> return ptr; </li></ul>
  9. 9. OPERATIONS ON DLL <ul><li>INSERTION </li></ul><ul><li>At beginning of list </li></ul><ul><li>At end of list </li></ul><ul><li>After a specified node </li></ul><ul><li>Before a specified node </li></ul><ul><li>Deletion </li></ul><ul><li>At beginning of list </li></ul><ul><li>At end of list </li></ul><ul><li>After a specified node </li></ul><ul><li>Before a specified node </li></ul><ul><li>Traversing </li></ul>
  10. 10. Insertion at begining <ul><li>Check for list is empty or not. </li></ul><ul><li>insrt_beg(node **head,node **tail,itemtype item) </li></ul><ul><li>{ </li></ul><ul><li>node *ptr; </li></ul><ul><li>ptr=create(item); </li></ul><ul><li>if(*head==NULL&&*tail==NULL){ </li></ul><ul><li>*head=ptr; </li></ul><ul><li>*tail=ptr; </li></ul><ul><li>} </li></ul>Head Tail
  11. 11. Insertion at beginning <ul><li>Before insertion </li></ul>20 10 30 Head Tail
  12. 12. <ul><li>new node </li></ul>2 ptr tail
  13. 13. <ul><li>Insertion </li></ul>2 ptr tail 20 10 30 Head Tail
  14. 14. <ul><li>Insertion of new node </li></ul>10 2 20 Head Tail 30
  15. 15. Code:- function <ul><li>insrt_beg(node **head,node **tail,itemtype item) </li></ul><ul><li>{ </li></ul><ul><li>node *ptr; </li></ul><ul><li>ptr=create(item); </li></ul><ul><li>if(*head==NULL&&*tail==NULL){ </li></ul><ul><li>*head=ptr; </li></ul><ul><li>*tail=ptr; </li></ul><ul><li>} </li></ul><ul><li>else{ </li></ul><ul><li> (*head)->prev=ptr; </li></ul><ul><li> ptr->next=*head; </li></ul><ul><li> *head=ptr; </li></ul><ul><li> ptr==NULL; </li></ul><ul><li>} </li></ul><ul><li> } </li></ul>
  16. 16. Insert at last of list <ul><li>new node before insertion </li></ul>40 ptr tail
  17. 17. 40 ptr tail 20 10 30 Head Tail
  18. 18. <ul><li>After insertion new node </li></ul>20 10 30 Head Tail 40
  19. 19. Code for this operation:- <ul><li>insrt(node ** head,node **tail,itemtype item){ </li></ul><ul><li>node *ptr; </li></ul><ul><li>ptr=create(item); </li></ul><ul><li>if(*head==NULL&& *tail==NULL){ </li></ul><ul><li>*head=ptr; </li></ul><ul><li>*tail=ptr; </li></ul><ul><li>} </li></ul><ul><li>else{ </li></ul><ul><li> ptr->prev=*tail; </li></ul><ul><li> (*tail)->next=ptr; </li></ul><ul><li> *tail=ptr; </li></ul><ul><li> ptr=NULL; </li></ul><ul><li> } </li></ul><ul><li>} </li></ul>
  20. 20. Insertion before a specified node:- <ul><li>new node </li></ul>40 ptr tail
  21. 21. Inserting new node <ul><li>Inserting before 30 </li></ul>20 10 40 Head Tail 30
  22. 23. function <ul><li>insrt_bfr_specify(node **head,node **tail,itemtype </li></ul><ul><li>item,itemtype sitem) </li></ul><ul><li>{ </li></ul><ul><li>node *ptr,*temp,*temp1 </li></ul><ul><li>ptr=create(item); </li></ul><ul><li>temp=*head; </li></ul><ul><li>if(*head==NULL&&*tail==NULL){ </li></ul><ul><li>*head=ptr; </li></ul><ul><li>*tail=ptr; </li></ul><ul><li>} </li></ul><ul><li>else{ </li></ul><ul><li>while(temp->item!=sitem&&temp->next!=NULL) </li></ul><ul><li>{ </li></ul><ul><li>temp=temp->next; </li></ul>
  23. 24. Cont. <ul><li>} </li></ul><ul><li> if(temp==NULL) </li></ul><ul><li> printf(&quot;item was not found&quot;); </li></ul><ul><li> else { </li></ul><ul><li> temp1=temp->prev; </li></ul><ul><li> ptr->prev=temp1->next; </li></ul><ul><li>temp1->next=ptr; </li></ul><ul><li> ptr->next=temp; </li></ul><ul><li> temp->prev=ptr; </li></ul><ul><li> ptr=NULL; </li></ul><ul><li> } </li></ul><ul><li>} </li></ul>
  24. 25. After a specified node <ul><li>New node </li></ul>40 ptr tail
  25. 26. <ul><li>Inserting after 20: </li></ul>20 10 40 Head Tail 30
  26. 27. Code :- <ul><li>insrt_aftr_specify(node **head,node **tail,itemtype </li></ul><ul><li>item,itemtype sitem){ </li></ul><ul><li>node *ptr,*temp,*temp1; </li></ul><ul><li>ptr=create(item); </li></ul><ul><li>temp=*head; </li></ul><ul><li>if(*head==NULL&&*tail==NULL){ </li></ul><ul><li>*head=ptr; </li></ul><ul><li>*tail=ptr; </li></ul><ul><li>} </li></ul><ul><li>else{ </li></ul><ul><li>while(temp->item!=sitem&&temp->next!=NULL) </li></ul><ul><li>{ </li></ul><ul><li>temp=temp->next; </li></ul>
  27. 28. Cont. <ul><li>} </li></ul><ul><li> if(temp==NULL) </li></ul><ul><li> printf(&quot;item was not found&quot;); </li></ul><ul><li> else { </li></ul><ul><li> temp1=temp->next; </li></ul><ul><li> ptr->prev=temp; </li></ul><ul><li> ptr->next=temp->next; </li></ul><ul><li> temp1->prev=ptr; </li></ul><ul><li> temp->next=ptr; </li></ul><ul><li> ptr=NULL; </li></ul><ul><li> } </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  28. 29. Deletion in DLL <ul><li>Deletion at begining </li></ul><ul><li>case :-if list is empty. </li></ul>Head Tail
  29. 30. function <ul><li>deletion_at_beg(node **head){ </li></ul><ul><li>node *temp; </li></ul><ul><li>temp=*head; </li></ul><ul><li>head=temp->next; </li></ul><ul><li>(*head)->prev=NULL; </li></ul><ul><li>free(temp); </li></ul><ul><li>} </li></ul>
  30. 31. <ul><li>Deleting first node </li></ul>10 2 20 Head Tail 30
  31. 32. 10 20 Head Tail 30
  32. 33. Traversing 10 Head 20 30 Tail
  33. 34. fuction <ul><li>show(node *q) </li></ul><ul><li>{ </li></ul><ul><li>while(q!=NULL) </li></ul><ul><li>{ </li></ul><ul><li>printf(&quot;%d-&quot;,q->item); </li></ul><ul><li>q=q->next; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  34. 35. Code: main function <ul><li>void main() </li></ul><ul><li>{ </li></ul><ul><li>int item,sitem,ch; </li></ul><ul><li>char c; </li></ul><ul><li>node *head,*tail; </li></ul><ul><li>clrscr(); </li></ul><ul><li>initialize(&head,&tail); </li></ul><ul><li>do </li></ul><ul><li>{ </li></ul><ul><li>ch=list(); </li></ul><ul><li>switch(ch){ </li></ul>
  35. 36. <ul><li>case 1: </li></ul><ul><li>printf(&quot;please enter the item&quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&item); </li></ul><ul><li>insrt(&head,&tail,item); </li></ul><ul><li>show(head); </li></ul><ul><li>break; </li></ul>
  36. 37. <ul><li>case 2: </li></ul><ul><li> printf(&quot;please enter the item&quot;); </li></ul><ul><li> scanf(&quot;%d&quot;,&item); </li></ul><ul><li> insrt_beg(&head,&tail,item); </li></ul><ul><li> show(head); </li></ul><ul><li> break; </li></ul>
  37. 38. Cont. <ul><li>case 3: </li></ul><ul><li>printf(&quot;please enter the item&quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&item); </li></ul><ul><li>show(head); </li></ul><ul><li>printf(&quot;please enter the specify item&quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&sitem); </li></ul><ul><li>insrt_bfr_specify(&head,&tail,item,sitem); </li></ul><ul><li>show(head); </li></ul><ul><li>break; </li></ul>
  38. 39. Cont. <ul><li>case 4: </li></ul><ul><li>printf(&quot;please enter the item&quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&item); </li></ul><ul><li>show(head); </li></ul><ul><li>printf(&quot;please enter the specify item&quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&sitem); </li></ul><ul><li>insrt_aftr_specify(&head,&tail,item,sitem); </li></ul><ul><li>show(head); </li></ul><ul><li>break; </li></ul>
  39. 40. Cont. case 5: show(head); deletion_at_beg(&head); show(head); break; default: printf(&quot;no choice&quot;); } printf(&quot; do u want to continue y &quot;); scanf(&quot; %c&quot;,&c); }while(c=='y'||c=='Y'); getch(); }
  40. 41. Display function <ul><li>list() </li></ul><ul><li>{ </li></ul><ul><li>int k; </li></ul><ul><li>printf(&quot; choose 1* for insert value in the list&quot;); </li></ul><ul><li>printf(&quot; choose 2* for insert at begiging in the list&quot;); </li></ul><ul><li>printf(&quot; choose 3* for insert before specified node inthe list&quot;); </li></ul><ul><li>printf(&quot; choose 4* for insert after specified node inhe list&quot;); </li></ul><ul><li>printf(&quot; choose 5* for delete begining from the list&quot;); </li></ul><ul><li> scanf(&quot; %d&quot;,&k); </li></ul><ul><li> return(k); </li></ul><ul><li>} </li></ul>

×