| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 310 人关注过本帖
标题:链栈初学,简单操作出现问题,求解答
只看楼主 加入收藏
梦寻
Rank: 1
等 级:新手上路
帖 子:27
专家分:6
注 册:2017-11-15
结帖率:100%
  已结贴   问题点数:20  回复次数:3   
链栈初学,简单操作出现问题,求解答
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    int data;
    struct node *next;
}linkstack;
void initlink(linkstack *top)
{
    top=(linkstack *)malloc(sizeof(node));
    top->next=NULL;
}
void push(linkstack *top,int x,int y)    //将x到y进栈
{
    node *temp;
    for(x;x<=y;x++)
    {  
        temp=(linkstack *)malloc(sizeof(node));
        temp->data=x;
        temp->next=top->next;
        top->next=temp;
    }
}
void pop(linkstack *top )
{
    node *temp;
    temp=(linkstack *)malloc(sizeof(node));
    temp=top->next;
    top->next=temp->next;  
    printf("%d ",temp->data);
    free(temp);
}
int main()
{
    int n;
    linkstack top;
    scanf("%d",&n);
    push(&top,1,n);
    while(top.next!=NULL)//此处运行似乎未完成,光标闪动。
    {
        pop(&top);  
    }                       
    return 0;
}
搜索更多相关主题的帖子: node  int  next  top  temp  
2018-11-12 19:40
lin5161678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:525
专家分:1930
注 册:2011-12-3
  得分:20 
程序代码:
void initlink(linkstack *top)
{ 
    top=(linkstack *)malloc(sizeof(linkstack));
    top->next=NULL;
}

这个函数写错了
只有值传递  修改top 对主函数里面top没有影响
主函数的top的next是垃圾值 不是NULL
你的链表没有NULL结尾 最后的循环退出条件无效
2018-11-12 20:08
梦寻
Rank: 1
等 级:新手上路
帖 子:27
专家分:6
注 册:2017-11-15
  得分:0 
回复 2楼 lin5161678
谢谢
2018-11-12 20:56
梦寻
Rank: 1
等 级:新手上路
帖 子:27
专家分:6
注 册:2017-11-15
  得分:0 
修改后:

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    int data;
    struct node *next;
}linkstack;
void push(linkstack *top,int x,int y)    //将x到y进栈
{
    node *temp;
    for(x;x<=y;x++)
    {  
        temp=(linkstack *)malloc(sizeof(node));
        temp->data=x;
        temp->next=top->next;
        top->next=temp;
    }
}
void pop(linkstack *top )
{
    node *temp;
    temp=(linkstack *)malloc(sizeof(node));
    temp=top->next;
    top->next=temp->next;  
    printf("%d ",temp->data);
    free(temp);
}
int main()
{
    int n;
    linkstack top;
    top.next=NULL;
    scanf("%d",&n);
    push(&top,1,n);
    while(top.next!=NULL)//此处运行似乎未完成,光标闪动。
    {
        pop(&top);  
    }                       
    return 0;
}
2018-11-12 21:08







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

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