Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Doubly linked list - Print (pop) as queue */
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- using namespace std;
- void push(int x);
- void pop();
- void search(int y);
- int nodeCounter = 1;
- typedef struct alvi
- {
- int data;
- struct alvi *prev;
- struct alvi *next;
- }node;
- node *head = NULL;
- node *tail = NULL;
- int main(void)
- {
- int choice;
- while(1)
- {
- printf("Choose 1 for PUSH , 2 for pop , 3 for search , 4 for quit. \t Select : ");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1:
- int number;
- printf("Enter number to push : ");
- scanf("%d",&number);
- push(number);
- break;
- case 2:
- pop();
- break;
- case 3:
- int find;
- printf("Enter number to search : ");
- scanf("%d",&find);
- search(find);
- break;
- case 4:
- return 0;
- break;
- default:
- printf("Wrong Selection. Choose correct number \n");
- break;
- }
- }
- return 0;
- }
- void push(int x)
- {
- node *newNode=new node();
- newNode->data=x;
- if(head==NULL&&tail==NULL)
- {
- newNode->prev=NULL;
- newNode->next=NULL;
- head=newNode;
- tail=newNode;
- printf("[INITIAL] Node : %d pushed \n",nodeCounter);
- nodeCounter++;
- }
- else
- {
- head->prev=newNode;
- newNode->next=head;
- head=newNode;
- printf("Node : %d pushed \n",nodeCounter);
- nodeCounter++;
- }
- }
- void pop()
- {
- node *cursor;
- cursor=tail;
- while(cursor!=NULL)
- {
- printf("%d ",cursor->data);
- cursor=cursor->prev;
- }
- printf("\n");
- }
- void search(int y)
- {
- int elementCounter=1;
- int flag=0;
- node *pointer;
- pointer=tail;
- while(pointer!=NULL)
- {
- if(pointer->data==y)
- {
- flag=1;
- printf("Found \n");
- printf("Element number : %d (Pop Serial)/(Push serial) \n",elementCounter);
- break;
- }
- pointer=pointer->prev;
- elementCounter++;
- }
- if(flag==0)
- {
- printf("Not Found \n");
- }
- printf("\n");
- }
Add Comment
Please, Sign In to add comment