Advertisement
SabirSazzad

Doubly Link list

Feb 26th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Node
  5. {
  6.     int data;
  7.     Node *prev;
  8.     Node *next;
  9. };
  10. Node *head = NULL;
  11. Node *getnewnode(int data)
  12. {
  13.     Node *newnode = new Node();
  14.     (*newnode).data = data;
  15.     (*newnode).prev = NULL;
  16.     (*newnode).next = NULL;
  17.     return newnode;
  18. }
  19. void InsertHead(int data)
  20. {
  21.     Node *newnode = getnewnode(data);
  22.     if(head==NULL)
  23.     {
  24.     head = newnode;
  25.     }
  26.     else
  27.     {
  28.         (*head).prev = newnode;
  29.         (*newnode).next = head;
  30.         head = newnode;
  31.     }
  32. }
  33. void InsertTail (int data)
  34. {
  35.     Node *newnode = getnewnode(data);
  36.     Node *temp = head;
  37.     if(head==NULL)
  38.     {
  39.         head = newnode;
  40.         return;
  41.     }
  42.     else
  43.     {
  44.         while((*temp).next != NULL)
  45.         {
  46.             temp = (*temp).next;
  47.         }
  48.         (*temp).next = newnode;
  49.         (*newnode).prev = temp;
  50.     }
  51. }
  52. void InsertAnyPosition(int n, int data)
  53. {
  54.     Node *newnode = getnewnode(data);
  55.     if(head==NULL && n==1)
  56.     {
  57.         head = newnode;
  58.         return;
  59.     }
  60.     else if(n==1)
  61.     {
  62.         (*head).prev = newnode;
  63.         (*newnode).next = head;
  64.         head = newnode;
  65.         return;
  66.     }
  67.     else
  68.     {
  69.         Node *temp = head;
  70.         int i;
  71.         for(i=1; i<n-1; i++)
  72.         {
  73.             temp = (*temp).next;
  74.         }
  75.         Node *temp2 = (*temp).next;
  76.         (*newnode).next=(*temp).next;
  77.         (*temp).next=newnode;
  78.         (*newnode).prev=temp;
  79.         (*temp2).prev = newnode;
  80.     }
  81.  
  82. }
  83. void DeleteAnyIndex(int index)
  84. {
  85.     Node *temp = head;
  86.     if(index==1)
  87.     {
  88.         //head = (*temp).next;
  89.         Node *temp2 = (*temp).next;
  90.         head = temp2;
  91.         (*temp2).prev = NULL;
  92.         return;
  93.     }
  94.     else
  95.     {
  96.         int i;
  97.         for(i=1; i<index-1; i++)
  98.         {
  99.             temp = (*temp).next;
  100.         }
  101.         Node *temp2 = (*temp).next;
  102.         (*temp).next = (*temp2).next;
  103.         Node *temp3 = (*temp2).next;
  104.         (*temp3).prev = temp;
  105.  
  106.     }
  107. }
  108. void print ()
  109. {
  110.     Node *temp = head;
  111.     cout << "\nForword...."<<endl;
  112.     while((*temp).next != NULL)
  113.     {
  114.         cout << (*temp).data << " ";
  115.         temp = (*temp).next;
  116.     }
  117.     cout << (*temp).data <<endl;
  118.     cout << "Reverse...."<<endl;
  119.     while (temp != NULL)
  120.     {
  121.         cout << (*temp).data << " ";
  122.         temp = (*temp).prev;
  123.     }
  124.     cout << "\n" << endl;
  125. }
  126. void Search(int data)
  127. {
  128.     Node *temp = head;
  129.     while((*temp).next != NULL)
  130.     {
  131.         if((*temp).data == data)
  132.         {
  133.             cout << "Found" <<endl;
  134.             return;
  135.         }
  136.         temp = (*temp).next;
  137.     }
  138.     if((*temp).data == data)
  139.     {
  140.         cout << "Found"<<endl;
  141.     }
  142.     else
  143.     {
  144.         cout << "Not Found" <<endl;
  145.     }
  146.  
  147. }
  148.  
  149. int main()
  150. {
  151.     InsertHead(50);
  152.     InsertHead(40);
  153.     InsertHead(30);
  154.     InsertHead(20);
  155.     InsertHead(10);
  156.     print();
  157.     int data,del,value,d1,d2,d3,index;
  158.     cout << "Insert Data at 1st position: ";
  159.     cin >> d1;
  160.     InsertHead(d1);
  161.     print();
  162.     cout << "Insert Data at Last Position: ";
  163.     cin >> d2;
  164.     InsertTail(d2);
  165.     print();
  166.     cout << "Insert Data at Any Index...."<<endl;
  167.     cout << "Input data: ";
  168.     cin >> d3;
  169.     cout << "Input Index number: ";
  170.     cin >> index;
  171.     InsertAnyPosition(index,d3);
  172.     print();
  173.     cout << "\nDelete index: ";
  174.     cin >> del;
  175.     DeleteAnyIndex(del);
  176.     print();
  177.     cout << "\nInput data for Search: ";
  178.     cin >> value;
  179.     Search(value);
  180.     return 0;
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement