用c语言实现单向链表的输入和输出,我也不知道哪里出错了,用VS2010运行的结果是一闪而过

就是自己输入一串数据(整型),然后每输一个就按回车,我的想法是,当输入的数字为0的时候,自动停止输入,然后输出,可是每次在输入了一串数字后,输入0,按回车就自动跳出exe... 就是自己输入一串数据(整型),然后每输一个就按回车,我的想法是,当输入的数字为0的时候,自动停止输入,然后输出,可是每次在输入了一串数字后,输入0,按回车就自动跳出exe了。。也不输出了。。求大神。。帮忙找一下原因
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct Number)
struct Number{
int num;
struct Number*next;};
int n;
struct Number* creat(void)
{struct Number*head;
struct Number*p1,*p2;
int n=0;
p1=p2=(struct Number*)malloc(LEN);
scanf("%d",&p1->num);
head=NULL;
while(p1->num!=0)
{n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Number*)malloc(LEN);
scanf("%d",&p1->num);}
p2->next=NULL;
return(head);
}
void print(struct Number*head)
{struct Number*p;
printf("刚才输入的数列按以下顺序出列");
p=head;
if(head!=NULL)
do
{printf("%d",p->num);
p=p->next;
}while(p!=NULL);
}
void main()
{printf("请输入一组序列");
struct Number *head;
head=creat();
print(head);
}
如果输入的是
3
4
5
0
然后就一闪而过了
展开
 我来答
cpucash
2013-01-11 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:966万
展开全部
一闪而过,其实就是maim函数的问题,在main函数的最后加入一个暂停或者等待输入的代码即可
一个两个,一个是用getchar等待输入一个字符,要是不输入,函数不结束,这个有个弊端,就是有可能一个getchar不能停下程序,因为上面有输入,回车也是字符,但不会被输入接受,所以一个getchar接受了回车还是不能等待输入,所以吸引多个
另一个是system("pause")调用dos的暂停命令

我看你代码,没有处理直接输入零的情况,所以输入的时候,要直接进入循环,输出的时候,用while即可

感觉creat函数有点不怎么样,不要自己想当然,这个在链表的建立那里,代码给的很清楚,直接改一下变量名套用即可
系榆6I
2013-01-10 · TA获得超过389个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:251万
展开全部
#include<stdio.h>
#include <stdlib.h>
#include<malloc.h>
#define LEN sizeof(struct Number)
struct Number{
int num;
struct Number*next;};
int n;
struct Number* creat(void)
{struct Number*head;
struct Number*p1,*p2;
int n=0;
p1=p2=(struct Number*)malloc(LEN);
scanf("%d",&p1->num);
head=NULL;
while(p1->num!=0)
{n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Number*)malloc(LEN);
scanf("%d",&p1->num);}
p2->next=NULL;
return(head);
}
void print(struct Number*head)
{struct Number*p;
printf("刚才输入的数列按以下顺序出列");
p=head;
if(head!=NULL)
do
{printf("%d",p->num);
p=p->next;
}while(p!=NULL);
}
void main()
{printf("请输入一组序列");
struct Number *head;
head=creat();
print(head);
system("pause");
}
程序经检测,无误,这是我给你添加两行之后的代码,分别是引入stdlib.h头文件,system函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6bfe03a
2013-01-10 · 超过13用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:38.7万
展开全部
加getchar();试试
最好截图带缩进的代码,方便别人阅读
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莫云今次
2013-01-10 · TA获得超过244个赞
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:143万
展开全部
system("pause") main函数最后面家上这句话
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b7778066
2013-01-10 · 超过13用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:40.5万
展开全部
单步调试就知道哪里出问题了,程序要多调才长经验
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式