The need:
This program was written just to show how definitions of push() and pop() vary as the element structure is changed. This program also provide you a fully functional interactive console to do some operations on stack.
The code:
---------------------------------------------------
This program was written just to show how definitions of push() and pop() vary as the element structure is changed. This program also provide you a fully functional interactive console to do some operations on stack.
The code:
---------------------------------------------------
#include<stdio.h> #include<stdlib.h> // defining data-type node struct linked_list { int num; struct linked_list *next, *prev; } ; typedef struct linked_list node ; //declaration of functions node *push(node *top,int j); int pop(node *top); void display(node *top); void rev_display(node *top); main() { int i,j; node *top=NULL ; while(1) { printf("\nEnter your choice :"); printf("\n1. Push. Dont push 0"); printf("\n2. Pop"); printf("\n3. Display top to bottom"); printf("\n4. Display bottom to top"); printf("\n5. Exit\n"); scanf("%d",&i); switch(i) { case 1 : scanf("%d",&j); top=push(top,j); break; case 2: j=pop(top); if(j) printf("Element popped is => %d\n",j); break; case 3: display(top); break; case 4: printf("Elements in the stack (bottom to top) are :\n"); rev_display(top); break; case 5: exit(0); default: printf("Invalid choice !!!\n\n"); } } } /*Inserting the elements using push function*/ node *push(node *top,int j) { node *m; m=(node *)malloc(sizeof(node)); m->num=j; m->next=top; m->prev=NULL; if(top) top->prev=m; return(m); } /*Removing the elements using pop function*/ int pop(node *top) { int j; node *temp=top; if(temp==NULL) { printf("\nSTACK is Empty!!!\n"); } else { j=top->num; temp=top->next; temp->prev=NULL; free(top); top=temp; return (j); } return 0; } /*Displaying the elements */ void display(node *top) { node *pointer=NULL; int j=0; pointer=top; if(top) { printf("Elements in the stack (top to bottom) are :\n"); while(pointer!=NULL) { printf("%d-->",pointer->num); pointer=pointer->next; j++; if(j>20) break; } printf("END\n\n"); } else printf("Stack is empty !!!\n"); } void rev_display(node *top) { node *p1=NULL,*p2=NULL; p1=top; while(p1!=NULL) { p2=p1; p1=p1->next; } while(p2!=NULL) { printf("%d-->",p2->num); p2=p2->prev; } printf("END\n\n"); }-----------------------------------------------------