用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
然后就一闪而过了 展开
#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
然后就一闪而过了 展开
5个回答
展开全部
一闪而过,其实就是maim函数的问题,在main函数的最后加入一个暂停或者等待输入的代码即可
一个两个,一个是用getchar等待输入一个字符,要是不输入,函数不结束,这个有个弊端,就是有可能一个getchar不能停下程序,因为上面有输入,回车也是字符,但不会被输入接受,所以一个getchar接受了回车还是不能等待输入,所以吸引多个
另一个是system("pause")调用dos的暂停命令
我看你代码,没有处理直接输入零的情况,所以输入的时候,要直接进入循环,输出的时候,用while即可
感觉creat函数有点不怎么样,不要自己想当然,这个在链表的建立那里,代码给的很清楚,直接改一下变量名套用即可
一个两个,一个是用getchar等待输入一个字符,要是不输入,函数不结束,这个有个弊端,就是有可能一个getchar不能停下程序,因为上面有输入,回车也是字符,但不会被输入接受,所以一个getchar接受了回车还是不能等待输入,所以吸引多个
另一个是system("pause")调用dos的暂停命令
我看你代码,没有处理直接输入零的情况,所以输入的时候,要直接进入循环,输出的时候,用while即可
感觉creat函数有点不怎么样,不要自己想当然,这个在链表的建立那里,代码给的很清楚,直接改一下变量名套用即可
展开全部
#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函数
#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函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加getchar();试试
最好截图带缩进的代码,方便别人阅读
最好截图带缩进的代码,方便别人阅读
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
system("pause") main函数最后面家上这句话
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单步调试就知道哪里出问题了,程序要多调才长经验
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询