注册 登录
编程论坛 数据结构与算法

请问哪错了??

X15810803158 发布于 2015-11-26 20:51, 1955 次点击
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct node
{
    int date;
    struct node * pnext;
}NODE,* PNODE;

typedef struct stack
{
    PNODE ptop;
    PNODE pbottom;

}STACK,* PSTACK;

void init  (PSTACK );
void push (PSTACK,int);
void traverse (PSTACK);
int main(void)
{
    stack s;

    init  (&s);//目的是造出一个空栈
    push (&s,1);//压栈
    push (&s,2);
    push (&s,3);
    traverse (&s);//遍历输出

   return ;
}

void init  (PSTACK ps )
{
    ps->ptop = (PNODE)malloc(sizeof(NODE));
    if (NULL != ps->ptop)
    {
        printf("分配失败\n");
        exit(-1);
    }
    else
    {
    ps->pbottom = ps->ptop;
    ps->pbottom->pnext  = NULL;
    }

}

void push (PSTACK ps,int val)
{
    PNODE pnew  = (PNODE)malloc(sizeof(NODE));

    pnew->date = val;
    pnew->pnext = ps->ptop;
    ps->ptop = pnew;




}

void traverse (PSTACK ps)
{
    PNODE p = ps->ptop;

    while (p != ps->pbottom)
    {
        printf("%d",p->date);
        p = p->pnext;
   
   
    }


  printf("\n");

  return;
}
1 回复
#2
hellovfp2015-11-27 10:39
ps->ptop = (PNODE)malloc(sizeof(NODE));
    if (NULL != ps->ptop)  《〈---如果节点分配成功,你居然当分配失败来处理
    {
        printf("分配失败\n");
        exit(-1);
    }
1