#include<stdio.h>
#include<stdlib.h>
struct node
{
int a;
struct node* next;
} ;
node* top= NULL ;
void push( int val)
{
//memory allocating for a node
node* tmp= ( node* ) malloc ( sizeof ( node) ) ;
tmp- > a= val;
tmp- > next= top; //add this new value at the end of the stack
//now top of the stack is the new node
top= tmp;
}
void pop( )
{
node* tmp;
if ( top== NULL )
printf ( "Stack is empty" ) ;
else
{
printf ( "popped element %d\n " ,top- > a) ;
tmp= top;
//top is replaced to the next node
top= top- > next;
//top node is deleted from the memory
free ( tmp) ;
}
}
void printlist( node* link)
{
//recursively printing the list to find the actual order of the values
if ( link! = NULL )
{
printlist( link- > next) ;
printf ( "%d " ,link- > a) ;
}
}
int main( )
{
int num,val;
bool getout= false ;
while ( true )
{
printf ( "Enter your choice:\n " ) ;
printf ( "1. Push\n 2. Pop\n 3. Exit\n " ) ;
scanf ( "%d" ,& num) ;
switch ( num)
{
case 1 :
scanf ( "%d" ,& val) ;
push( val) ;
printf ( "now the list is: " ) ;
printlist( top) ;
puts ( "" ) ;
break ;
case 2 :
pop( ) ;
printf ( "now the list is: " ) ;
printlist( top) ;
puts ( "" ) ;
break ;
case 3 :
getout= true ;
break ;
}
if ( getout== true )
break ;
}
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnN0cnVjdCBub2RlCnsKICAgIGludCBhOwoJc3RydWN0IG5vZGUqIG5leHQ7Cn07Cgpub2RlKiB0b3A9TlVMTDsKCnZvaWQgcHVzaChpbnQgdmFsKQp7CiAgICAvL21lbW9yeSBhbGxvY2F0aW5nIGZvciBhIG5vZGUKCW5vZGUqIHRtcD0obm9kZSopIG1hbGxvYyhzaXplb2Yobm9kZSkpOwoKCXRtcC0+YT12YWw7Cgl0bXAtPm5leHQ9dG9wOyAgICAgICAgICAgICAvL2FkZCB0aGlzIG5ldyB2YWx1ZSBhdCB0aGUgZW5kIG9mIHRoZSBzdGFjawoKCS8vbm93IHRvcCBvZiB0aGUgc3RhY2sgaXMgdGhlIG5ldyBub2RlCgl0b3A9dG1wOwp9Cgp2b2lkIHBvcCgpCnsKCW5vZGUqIHRtcDsKCglpZih0b3A9PU5VTEwpCgkJcHJpbnRmKCJTdGFjayBpcyBlbXB0eSIpOwoJZWxzZQoJewoJCXByaW50ZigicG9wcGVkIGVsZW1lbnQgJWRcbiIsdG9wLT5hKTsKCQl0bXA9dG9wOwoJCS8vdG9wIGlzIHJlcGxhY2VkIHRvIHRoZSBuZXh0IG5vZGUKCQl0b3A9dG9wLT5uZXh0OwoKICAgICAgICAvL3RvcCBub2RlIGlzIGRlbGV0ZWQgZnJvbSB0aGUgbWVtb3J5CgkJZnJlZSh0bXApOwoJfQp9Cgp2b2lkIHByaW50bGlzdChub2RlKiBsaW5rKQp7CiAgICAgLy9yZWN1cnNpdmVseSBwcmludGluZyB0aGUgbGlzdCB0byBmaW5kIHRoZSBhY3R1YWwgb3JkZXIgb2YgdGhlIHZhbHVlcwoJaWYobGluayE9TlVMTCkKCXsKCQlwcmludGxpc3QobGluay0+bmV4dCk7CgkJcHJpbnRmKCIlZCAiLGxpbmstPmEpOwoJfQp9CgppbnQgbWFpbigpCnsKCWludCBudW0sdmFsOwoJYm9vbCBnZXRvdXQ9ZmFsc2U7CgoJd2hpbGUodHJ1ZSkKCXsKCSAgICBwcmludGYoIkVudGVyIHlvdXIgY2hvaWNlOlxuIik7CgkgICAgcHJpbnRmKCIxLiBQdXNoXG4yLiBQb3BcbjMuIEV4aXRcbiIpOwoJICAgIHNjYW5mKCIlZCIsJm51bSk7CgoJCXN3aXRjaChudW0pCgkJewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCZ2YWwpOwoKICAgICAgICAgICAgICAgIHB1c2godmFsKTsKCiAgICAgICAgICAgICAgICBwcmludGYoIm5vdyB0aGUgbGlzdCBpczogIik7CiAgICAgICAgICAgICAgICBwcmludGxpc3QodG9wKTsKICAgICAgICAgICAgICAgIHB1dHMoIiIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHBvcCgpOwoKICAgICAgICAgICAgICAgIHByaW50Zigibm93IHRoZSBsaXN0IGlzOiAiKTsKICAgICAgICAgICAgICAgIHByaW50bGlzdCh0b3ApOwogICAgICAgICAgICAgICAgcHV0cygiIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgZ2V0b3V0PXRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKCQl9CgogICAgICAgIGlmKGdldG91dD09dHJ1ZSkKICAgICAgICAgICAgYnJlYWs7Cgl9CgoJcmV0dXJuIDA7Cn0K