| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 242 人关注过本帖
标题:为什么我的链栈不能正常出栈啊,请求帮助
只看楼主 收藏
hellohe
Rank: 1
等 级:新手上路
帖 子:26
专家分:7
注 册:2018-3-12
结帖率:50%
  已结贴   问题点数:20  回复次数:4   
为什么我的链栈不能正常出栈啊,请求帮助
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkStack
{
    int data;
    struct LinkStack *next;
}link;

//置空栈算法
link *SetNull(link *Top)
{
    Top=NULL;
}
//判栈空算法
int Empty(link *Top)
{
    if(Top==NULL)
        return 1;
    else return 0;
}
//初始化算法
link *LinkStackInit(link *Top)
{
//link *Top; //构造一个空栈
Top=(link *)malloc(sizeof(link));
return Top;
}
//进栈算法
void Push(link *Top,int x)
{
    link *p;


    p=(link *)malloc(sizeof(link));
    p->data=x;
    p->next=Top;
    Top=p;
    //return Top;
}
//出栈算法
int Pop(link *Top)
{
    link *p;
    int x;
    if(Top==NULL)
        return NULL;
    else
    {
        p=Top;
        x=Top->data;
        Top=Top->next;
        free(p);
        return x;
    }
}
//读栈顶元素算法
int GetTop(link *Top)
{
    if(Top==NULL)
        return NULL;
    else return Top->data;

}

int main()
{
    link *Top=NULL;
    //Top=(link *)malloc(sizeof(link));
    int x,i;
    Top=LinkStackInit(Top);
    Top=SetNull(Top);
    for(i=0;i<4;i++)
    {printf("输入栈元素:");
   scanf("%d",&x);
    //getchar();
    Push(Top,x);
    }
    for(i=0;i<4;i++)
    {
        printf("输出栈元素:");
        printf("%d",Pop(Top));
        printf("\n");
    }
    return 0;
}

附件: 您没有浏览附件的权限,请 登录注册
2018-03-12 16:26
hellohe
Rank: 1
等 级:新手上路
帖 子:26
专家分:7
注 册:2018-3-12
  得分:0 
都没人吗?

2018-03-12 16:37
LiGoudan
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:20
专家分:148
注 册:2018-2-28
  得分:20 
程序代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct LinkStack
{
    int data;
    struct LinkStack *next;
}link;

//置空栈算法
link *SetNull(link *Top)
{
    Top=NULL;
    return Top;
}
//判栈空算法
int Empty(link *Top)
{
    if(Top==NULL)
        return 1;
    else return 0;
}
//初始化算法
link *LinkStackInit(link *Top)
{
    //link *Top; //构造一个空栈
    Top=(link *)malloc(sizeof(link));
    Top->next = NULL;
    return Top;
}
//进栈算法
void Push(link **Top,int x)
{
    link *p;


    p=(link *)malloc(sizeof(link));
    p->data=x;
    p->next = *Top;
    *Top = p;
    //return Top;
}
//出栈算法
int Pop(link **Top)
{
    link *p;
    int x;
    if(Top==NULL)
        return NULL;
    else
    {
        p = *Top;
        x = (*Top)->data;
        (*Top) = (*Top)->next;
        free(p);
        p = NULL;
        return x;
    }
}
//读栈顶元素算法
int GetTop(link *Top)
{
    if(Top==NULL)
        return NULL;
    else return Top->data;

}

int main()
{
    link *Top=NULL;
    //Top=(link *)malloc(sizeof(link));
    int x,i;
    Top=LinkStackInit(Top);
    //Top=SetNull(Top);
    for(i=0;i<4;i++)
    {
        printf("输入栈元素:");
        scanf("%d",&x);
        //getchar();
        Push(&Top,x);
    }
    for(i=0;i<4;i++)
    {
        printf("输出栈元素:");
        printf("%d",Pop(&Top));
        printf("\n");
    }
    return 0;
}


自己对比看看吧,主要是进栈和出栈函数有问题!

[此贴子已经被作者于2018-3-13 20:01编辑过]

2018-03-12 23:26
hellohe
Rank: 1
等 级:新手上路
帖 子:26
专家分:7
注 册:2018-3-12
  得分:0 
回复 3楼 LiGoudan
谢了
2018-03-13 22:46
hellohe
Rank: 1
等 级:新手上路
帖 子:26
专家分:7
注 册:2018-3-12
  得分:0 
回复 3楼 LiGoudan
要是我不用指向指针的指针**p可以实现吗?为什么我用指针变量不行啊?可以说一下吗
2018-03-13 23:12







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043219 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved