The need:
This program was written to get clear idea of stack concept. When I wrote program of previous post, I used to try to find physical existence of stack in the program. This program shows that stack is just an implementation not a physical thing like array. This program utilizes two common UDFs of stack implementation: 1. push() 2. pop(). This program only takes an element( here a number) form user and pushes on the top of an abstract stack. Then the program pops that element and prints back for user.
The code:
------------------------------------------------------
This program was written to get clear idea of stack concept. When I wrote program of previous post, I used to try to find physical existence of stack in the program. This program shows that stack is just an implementation not a physical thing like array. This program utilizes two common UDFs of stack implementation: 1. push() 2. pop(). This program only takes an element( here a number) form user and pushes on the top of an abstract stack. Then the program pops that element and prints back for user.
The code:
------------------------------------------------------
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MIN_INT 0x80000000
struct linked_list
{
int num;
struct linked_list *next;
};
typedef struct linked_list node;
void push(node **p,int x);
int pop(node **p);
main()
{
int i,j;
node *top=NULL;
printf("Enter a natural number to push on stack.\n");
scanf("%d",&i);
push(&top,i);
printf("%d pushed successfully\n",i);
printf("now popping\n");
j=pop(&top);
printf("element popped is %d\n",j);
return 0;
}
void push(node **p,int x)
{
node *new_node;
new_node=(node *)malloc(sizeof(node));
new_node->num=x;
new_node->next=*p;
*p=new_node;
}
int pop(node **p)
{
node *tmp=*p;
int temp;
if(tmp==NULL)
return (MIN_INT);
else
{
*p=tmp->next;
temp = tmp->num;
free(tmp);
return(temp);
}
}------------------------------------------------------
Remarks:
1. This program can be used for pushing any number of values. Here I needed some indication when the empty stack is asked for pop. In that case pop returns MIN_INT which is minimum possible value for integer. When on popping stack returns MIN_INT in main, we get to know that stack is actually empty.
2. Have a look on this program for some purposeful implementation of stack concept.
Remarks:
1. This program can be used for pushing any number of values. Here I needed some indication when the empty stack is asked for pop. In that case pop returns MIN_INT which is minimum possible value for integer. When on popping stack returns MIN_INT in main, we get to know that stack is actually empty.
2. Have a look on this program for some purposeful implementation of stack concept.
No comments:
Post a Comment
feel free to ask your doubts... if any
you can post your doubts on
www.facebook.com/programsimply