#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char *pBuffer;
int Size;
int Top;
}stack;
void MyStack(stack *p,int size);
void DestroyStack(stack *p);
int StackEmpty(stack p);
int StackFull(stack p);
void ClearStack(stack *p);
int StackLength(stack p);
int push(stack *p,char elem);
int pop(stack *p,char *elem);
void StackTraverse(stack p);
void MyStack(stack *p,int size)
{
p->Size=size;
p->pBuffer=(char *)malloc(sizeof(char)*p->Size);
p->Top=0;
}
void DestroyStack(stack *p)
{
free(p->pBuffer);
p->pBuffer=NULL;
}
int StackEmpty(stack p)
{
if(0==p.Top)
{
return 1;
}
return 0;
}
int StackFull(stack p)
{
if(p.Size==p.Top)
{
return 1;
}
return 0;
}
void ClearStack(stack *p)
{
p->Top=0;
}
int StackLength(stack p)
{
return p.Top;
}
int push(stack *p,char elem)
{
if(StackFull(*p))
{
return 1;
}
p->pBuffer[p->Top]=elem;
p->Top++;
return 0;
}
int pop(stack *p,char *elem)
{
if (StackEmpty(*p))
{
return 1;
}
p->Top--;
*elem=p->pBuffer[p->Top];
return 0;
}
void StackTraverse(stack p)
{
int i;
for (i=0;i<p.Top;i++)
{
printf("%-5c",p.pBuffer[i]);
}
putchar(10);
}