C语言数据结构问题,求解
# include <stdio.h># include <stdlib.h>
# include <malloc.h>
typedef struct node
{
int data; // 数据域
struct stack *pnext; //指针域
}NODE, *PNODE;
typedef struct stack
{
PNODE top; // 栈的顶部
PNODE bottom; // 栈的底部
} STACK, *PSTACK;
/* * * * * * * 函数声明* * * * * * * */
void init(PSTACK ps);
// 初始化函数
void push(PSTACK ps,int val);
// 压栈
void traversal(STACK ps);
// 遍历输出
bool empty(PSTACK ps);
// 判断是否为空
int main ( void )
{
STACK ps; // 创建
init (&ps);
push (&ps,6);
push (&ps,8);
traversal(&ps);
return 0;
}
void init (PSTACK ps)
{
ps->bottom=(PNODE)malloc(sizeof (NODE));
// 为栈的底部分配字节
if (ps->bottom == NULL)
{
printf("分配失败!\n");
exit (-1);
}
ps->top=ps->bottom;
//栈的底部和顶部指向同一空间
ps->bottom->pnext=NULL;
//可改为ps->top
//栈的底部指针域为空
}
void push(PSTACK ps,int val)
{
PNODE pnew=(PNODE)malloc(sizeof (NODE));
// 开辟新字节
if (pnew==NULL)
{
printf("分配失败!\n");
exit(-1);
}
else
{
pnew->data=val;
// 将val的值赋给pnew的数据域
pnew->pnext=ps->top->pnext;
// 连接top和pnew
ps->top=pnew;
// 连接pnew和空节点
}
return;
}
bool empty(PSTACK ps)
{
// 如果顶部等于底部,说明为空
if (ps->top==ps->bottom)
return true;
else
return false;
}
void traversal(PSTACK ps)
{
PNODE p= ps->top;
while (p !=ps->bottom)
{
// 输出top的数据
printf("%d ",p->data);
p=p->pnext;
}
printf("\n");
return;
}
不知道哪里出错了?求指出?