# include <STDIO.H>
# include <MALLOC.H>
typedef struct Node
{
int data;
char ch;
}* PNODE, NODE;
typedef struct Stack
{
PNODE pTop;
PNODE pBottom;
}* PSTACK, STACK;
void init(PSTACK pS, int len)
{
pS->pBottom = (PNODE)malloc(sizeof(NODE) * len);
pS->pTop = pS->pBottom;
}
void push(PSTACK pS, int val, char ch)
{
pS->pTop->data = val;
pS->pTop->ch = ch;
pS->pTop++;
}
void traverse(PSTACK pS)
{
PNODE pTemp = pS->pTop;
while (pTemp != pS->pBottom)
{
pTemp--;
printf("%d, %c\n", pTemp->data, pTemp->ch);
}
return;
}
void pop(PSTACK pS)
{
if (pS->pTop != pS->pBottom)
{
pS->pTop--;
printf("出栈元素:%d, %c\n", pS->pTop->data, pS->pTop->ch);
pS->pTop->data = NULL;
pS->pTop->ch = NULL;
}
else
{
printf("空栈!\n");
}
return;
}
int main(void)
{
STACK s;
init(&s, 10);
push(&s, 23, 'z');
push(&s, 343, 'y');
push(&s, 87, 'x');
traverse(&s);
pop(&s);
traverse(&s);
return 0;
}