LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 676|回复: 2

关于栈的小问题.

[复制链接]
发表于 2004-12-11 21:59:05 | 显示全部楼层 |阅读模式
我的代码如下:
#include <stdio.h>
#include <malloc.h>

#define DATATYPE2 int
typedef struct snode{
        DATATYPE2                data;
        struct snode*         next;
}LINKSTACK;

void pushstack(LINKSTACK *top,DATATYPE2 x)
{
        LINKSTACK *p;
        p=malloc(sizeof(LINKSTACK));
        p->data=x;
        p->next=top;
        top=p;
}
DATATYPE2 popstack(LINKSTACK *top)
{
        DATATYPE2 v;
        LINKSTACK *p;
        if(top==NULL)
                printf("Underflow\n");
        else{
                v=top->data;
                p=top;
                top=top->next;
                free(p);
        }
        return v;
}

void main()
{
        LINKSTACK *top;
        top=malloc(sizeof(LINKSTACK));
        top->next=NULL;
       
        pushstack(top,2);
        printf("%d\n",popstack(top));
}
很简单。
编译没问题,然而运行时输出结果却不对。不知为何,请教高手。赫赫
发表于 2004-12-11 22:50:44 | 显示全部楼层
也许您没有注意到,但是别人已经在您的其他帖子里提示很多次了,请注意代码缩进。
发表于 2004-12-12 11:32:55 | 显示全部楼层
应该声明成DATATYPE2 popstack(LINKSTACK **ptop),push那个也类似。
调用的时候把top的地址传进去,这样才能在函数中修改main里面的top的值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表