标题:链栈初学,简单操作出现问题,求解答
只看楼主
梦寻
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: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:20 
程序代码:
void initlink(linkstack *top)
{ 
    top=(linkstack *)malloc(sizeof(linkstack));
    top->next=NULL;
}

这个函数写错了
只有值传递  修改top 对主函数里面top没有影响
主函数的top的next是垃圾值 不是NULL
你的链表没有NULL结尾 最后的循环退出条件无效

https://zh.
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491201-1-1.html




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

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