70,023
社区成员




#include<stdio.h>
#include<malloc.h>
typedef struct node{
char a[4+1];/*多一个,用来在第26行的i=4时的检测*//*你的结构很有问题,错太多了,我懒得改了,最好重弄一次*/
struct node *link;
}NODE;
void print(NODE *p)
{
int i;
for(;p!=NULL;p=p->link)/*改成p,p->next的话,那第一个呢???*/
{for(i=0;i<4;i++)printf("%c",p->a[i]);}/*如果p->a的值没满怎么办,比如就给a[0],a[1]赋值,这里自己改下吧*/
}
/*还有最大的错误*/
main()
{
NODE *head,*p,*q;
int i;
head=(NODE *)malloc(sizeof(NODE));
p=head;/*正常来说,head如果是头结点的话,不应该赋值的,没错,只是结构问题*/
printf("input the linklist value:\n");
scanf("%c",&p->a[0]);/*先给0赋值*/
while(1)
{ for(i=0;i<4&&p->a[i]!='0'/*=3=我忘记\0用什么来弄了,反正输入0是不行的,所以改了下,
直接用字符0,或者你也可以用EOF,但是不记得怎么输入EOF*/;)
{i++;scanf("%c",&p->a[i]);}/*你p->a[i]还没赋值,里面的值是未定义的,就先测试是不是等于'\0',就这里错了,应该先给0赋值,然后再i++*/
if(p->a[i]=='0')break;/*还有你赋值的i=4时候的那个值没了:比如输入1234560,那么得到的就是12346*/
p=p->link=(NODE *)malloc(sizeof(NODE));
scanf("%c",&p->a[0]);
}
p->link=NULL;
printf("these are you input values:\n");
print(head);
getchar();
getchar();
}