新手,请教各位大侠c程序问题出在哪里,都想了一个上午了。谢谢了!!
这是数据结构的一道题目,要求我们按指针链表结构输入实现存储(意思大致是这样子的,老师也没讲清楚)问题出在输出中,我先要求给定n,然后输入,再判断link是否为NIULL来输出所有的数据,照理来说应该没有问题
运行:叫我输入n的值,5,回车
然后开始输入字符串,回车
可是输出的时候只有4个字符,而且多了一个空行(程序里没有这个命令啊)
1:首先我将creat()中i=1,改为i=0,输出长度正常,但还是有空行
2:改回i=1,将输入n的命令删除,在程序里面定义n的值,结果一切正常,空行也没有了。
大概问题出在输入n的值地方,可就是想不出来,特意来求教,不胜感激!!
#include "stdio.h"
typedef struct node { char data;
struct node *link;
} NODE;
NODE *head,*p,*q;
void creat(int n)
{
int i=0;
if(n!=0)
{
head=(NODE *)malloc(sizeof(NODE));
p=head;
for(i=1;i<n;i++)
{
scanf("%c",&(p->data));
q=(NODE *)malloc(sizeof(NODE));
p->link=q;
p=q;
}
scanf("%c",&(p->data));
p->link=NULL;
}
else
printf("n的值必须为正整数,请重新输入!");
}
void outlist()
{
if(head!=NULL)
{
p=head;
while(p->link!=NULL)
{
printf("%c",p->data);
p=p->link;
}
printf("%c",p->data);
}
}
main()
{
int n;
printf("Please input the number of your chars:");
scanf("%d",&n);
creat(n);
outlist();
printf("\n请按任意键结束...");
getch();
}