#include <stdio.h>
#include <alloc.h>
typedef struct stacknode{
char data;
struct stacknode *next;
}linkstack;
linkstack *top;
void INITSTACK(linkstack *top)
{
top = (linkstack*)malloc(sizeof(linkstack));
top->data= NULL;
}
int EMPTYSTACK(linkstack *top)
{
if(top!=NULL)
return 0;
else
return 1;
}
void PUSH(linkstack *top,char x)
{
linkstack *p;
p=(linkstack*)malloc(sizeof(linkstack));
p->data=x;
p->next=NULL;
top->next=p;
top=p;
}
void POP(linkstack *top,char &x)
{
linkstack *p;
if(EMPTYSTACK(top))
printf("UnderFlow/n");
else
{
p=top;
x=top->data;
top=top->next;
free(p);
}
}
void GETTOP(linkstack *top,char &x)
{
if(EMPTYSTACK(top))
printf("UnderFlow,stack is empty/n");
else
x=top->data;
}
void display(linkstack *top)
{
linkstack *p;
p = top;
char ch;
while (p!=NULL)
{
printf ("%c",p->data);
p = p->next;
}
printf("%c",p->data);
}
void main()
{
char c1,c2,c3;
linkstack *p;
printf ("Setup an empty stack./n");
INITSTACK(p);
printf ("Push a char into the stack.Enter the char:/n");
while ((c1 = getchar())!='/n')
PUSH(p,c1);
printf ("The stack now is:");
display (p);
printf ("/n");
GETTOP(p,c2);
printf ("The top of the stack is:%c/n",c2);
printf ("Now pop the top elem if the stack is not empty./n");
POP(p,c3);
printf ("The stack now is:");
display (p);
printf ("/n");
}
#include <alloc.h>
typedef struct stacknode{
char data;
struct stacknode *next;
}linkstack;
linkstack *top;
void INITSTACK(linkstack *top)
{
top = (linkstack*)malloc(sizeof(linkstack));
top->data= NULL;
}
int EMPTYSTACK(linkstack *top)
{
if(top!=NULL)
return 0;
else
return 1;
}
void PUSH(linkstack *top,char x)
{
linkstack *p;
p=(linkstack*)malloc(sizeof(linkstack));
p->data=x;
p->next=NULL;
top->next=p;
top=p;
}
void POP(linkstack *top,char &x)
{
linkstack *p;
if(EMPTYSTACK(top))
printf("UnderFlow/n");
else
{
p=top;
x=top->data;
top=top->next;
free(p);
}
}
void GETTOP(linkstack *top,char &x)
{
if(EMPTYSTACK(top))
printf("UnderFlow,stack is empty/n");
else
x=top->data;
}
void display(linkstack *top)
{
linkstack *p;
p = top;
char ch;
while (p!=NULL)
{
printf ("%c",p->data);
p = p->next;
}
printf("%c",p->data);
}
void main()
{
char c1,c2,c3;
linkstack *p;
printf ("Setup an empty stack./n");
INITSTACK(p);
printf ("Push a char into the stack.Enter the char:/n");
while ((c1 = getchar())!='/n')
PUSH(p,c1);
printf ("The stack now is:");
display (p);
printf ("/n");
GETTOP(p,c2);
printf ("The top of the stack is:%c/n",c2);
printf ("Now pop the top elem if the stack is not empty./n");
POP(p,c3);
printf ("The stack now is:");
display (p);
printf ("/n");
}