#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<process.h>
struct Node
{
   int info;
   Node *next;
} *top,*newptr,*save,*ptr;
Node *Create_New_Node(int );
void push(Node *);
void display(Node *);
void pop();
int main()
{
   clrscr();
   top=NULL; //in the begining linked stack is empy, thus pointers are NULL
   int inf;  char ch='y';
   while(ch=='y'||ch=='Y')
   {
     cout<<"\n Enter information for the new node....";
     cin>>inf;
     newptr=Create_New_Node(inf);
     if(newptr==NULL)
     {
    cout<<"\n cannot create new node \n";
    exit(1);
     }
     push(newptr);
     cout<<"\n Press y to enter more nodes, N to exit()....";
     cin>>ch;
   }// while end.
   do
   {
     cout<<"\n The stack now is : \n";
     display(top);
     cout<<"want to pop an element ? (y/n)";
     cin>>ch;
     if(ch=='y'||ch=='Y')
     pop();
    }
    while(ch=='y'||ch=='Y');
    return 0;
  }//main end
  Node *Create_New_Node(int n)
  {
    ptr= new Node;
    ptr->info=n;
    ptr->next=NULL;
    return ptr;
  }
  void push(Node *np)
  {
    if(top == NULL) top=np;
    else
    {  save =top; top=np;
       np->next=save;
    }
  }
  void pop()
  {
    if(top==NULL) cout<<"Underflow";
    else
    {
      ptr=top; top=top->next;
      delete ptr;
     }
  }
  void display(Node *np)
  {
    while(np != NULL)
    {
      cout<<np->info<<"->";
      np=np->next;
    }
    cout<<" !!! \n";
  }
 
No comments:
Post a Comment