/*
供参考!
*/
# include
# include
# include
typedef struct Node
{
x05int data;
x05struct Node * pNext;
}NODE,* PNODE;
typedef struct Stack
{
x05PNODE pTop;
x05PNODE pBottom;
}STACK,* PSTACK;
void init(PSTACK pS);//栈初始化
void push(PSTACK pS,int val);//压栈
void traverse(PSTACK pS,int len);//遍历栈
int pop(PSTACK pS);//出栈
bool empty(PSTACK pS);//判断栈是否为空
int main(void)
{
x05STACK s;
x05printf("初始化栈:.n");
x05init(&s);
x05printf("压栈.n");
x05printf("请输入要压入栈的元素个数:t");
x05int len;
x05scanf("%d",&len);
x05int i,val;
x05for (i=0; ipTop = (PNODE)malloc(sizeof(NODE));
x05if (NULL == pS->pTop)
x05{
x05x05printf("动态内存分配失败!n");
x05x05exit(-1);
x05}
x05else
x05{
x05x05pS->pBottom = pS->pTop ;
x05x05pS->pTop->pNext = NULL;
x05}
x05return;
}
void push(PSTACK pS,int val)
{
x05PNODE pNew = (PNODE)malloc(sizeof(NODE));
x05pNew->data = val;
x05pNew->pNext = pS->pTop ;
x05pS->pTop = pNew;
x05return ;
}
void traverse(PSTACK pS,int len)
{
x05int i,val;
x05
x05for(i=0; ipTop == pS->pBottom)
x05{
x05x05return true;
x05}
x05else
x05x05return false;
}
int pop(PSTACK pS)
{
x05int val;
x05if (empty(pS))
x05{
x05x05return 1;
x05x05printf("栈为空!程序结束n");
x05x05exit(-1);
x05}
x05else
x05{
x05x05PNODE r = pS->pTop;
x05x05val = r->data ;
x05x05pS->pTop = r->pNext;
x05x05free(r);
r = NULL;
x05x05return val;
x05}
}
/*
在vc++6.0中的输出结果是:
--------------------
初始化栈:.
压栈.
请输入要压入栈的元素个数:3
第1个入栈元素:4
第2个入栈元素:5
第3个入栈元素:6
遍历栈.
6 5 4
-----------------------
*/