rootUser

Doubly linked list Print pop as stack

May 27th, 2016
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Doubly linked list - Print (pop) as stack --- Adding tail */
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstdlib>
  5. #include<cstring>
  6. using namespace std;
  7.  
  8. void push(int x);
  9. void pop();
  10. void search(int y);
  11.  
  12. int nodeCounter = 1;
  13.  
  14. typedef struct alvi
  15. {
  16.     int data;
  17.     struct alvi *prev;
  18.     struct alvi *next;
  19. }node;
  20. node *head = NULL;
  21. node *tail = NULL;
  22.  
  23. int main(void)
  24. {
  25.     int choice;
  26.     while(1)
  27.     {
  28.         printf("Choose 1 for PUSH , 2 for pop , 3 for search , 4 for quit. \t Select : ");
  29.         scanf("%d",&choice);
  30.         switch(choice)
  31.         {
  32.             case 1:
  33.                 int number;
  34.                 printf("Enter number to push : ");
  35.                 scanf("%d",&number);
  36.                 push(number);
  37.                 break;
  38.             case 2:
  39.                 pop();
  40.                 break;
  41.             case 3:
  42.                 int find;
  43.                 printf("Enter number to search : ");
  44.                 scanf("%d",&find);
  45.                 search(find);
  46.                 break;
  47.             case 4:
  48.                 return 0;
  49.                 break;
  50.             default:
  51.                 printf("Wrong Selection. Choose correct number \n");
  52.                 break;
  53.         }
  54.     }
  55.     return 0;
  56. }
  57. void push(int x)
  58. {
  59.     node *newNode=new node();
  60.     newNode->data=x;
  61.     if(head==NULL&&tail==NULL)
  62.     {
  63.         newNode->prev=NULL;
  64.         newNode->next=NULL;
  65.  
  66.         head=newNode;
  67.         tail=newNode;
  68.  
  69.         printf("[INITIAL] Node : %d pushed \n",nodeCounter);
  70.         nodeCounter++;
  71.     }
  72.     else
  73.     {
  74.         newNode->prev=tail;
  75.         newNode->next=NULL;
  76.  
  77.         tail=newNode;
  78.  
  79.         printf("Node : %d pushed \n",nodeCounter);
  80.         nodeCounter++;
  81.     }
  82.     printf("\n");
  83. }
  84. void pop()
  85. {
  86.     node *cursor;
  87.     cursor=tail;
  88.     while(cursor!=NULL)
  89.     {
  90.         printf("%d ",cursor->data);
  91.         cursor=cursor->prev;
  92.     }
  93.     printf("\n");
  94. }
  95. void search(int y)
  96. {
  97.     int elementCounter=1;
  98.     int flag=0;
  99.     node *pointer;
  100.     pointer=tail;
  101.     while(pointer!=NULL)
  102.     {
  103.         if(pointer->data==y)
  104.         {
  105.             flag=1;
  106.             printf("Found \n");
  107.             printf("Element number : %d (Pop Serial) / %d (Push serial) \n",elementCounter,(nodeCounter-elementCounter));
  108.             break;
  109.         }
  110.         pointer=pointer->prev;
  111.         elementCounter++;
  112.     }
  113.     if(flag==0)
  114.     {
  115.         printf("Not Found \n");
  116.     }
  117.     printf("\n");
  118. }
Add Comment
Please, Sign In to add comment