一个关于链表的小问题
我的问题是:我在creat函数里明明已经返回了一个地址head,然后在主函数中调用时,应该是已经将head的值赋值给p了的,但是主函数里的printf却输不出任何结果,各位高手来帮看看吧。PS:下面这段代码我自己看了半天了,还是找不出问题所在,代码写得很乱,但还是希望高手们指点一下吧。
程序代码:
#include<stdio.h> #include<malloc.h> #define NULLL 0 struct aa { char a; struct aa *next; }; struct aa *creat( int n) { struct aa *p1=NULLL,*p2=NULLL,*head=NULLL; int m=1; while(1) { if(m==1&&m<n) { p2=(struct aa *)malloc(sizeof(struct aa)); head=p2; p1=p2; printf("input the %dth characters: ",m); scanf("%c",&p1->a); m+=1; } if(m!=1&&m<n) { p2=(struct aa *)malloc(sizeof(struct aa)); p1->next=p2; p1=p2; printf("input the %dth characters: ",m); scanf("%c",&p1->a); m+=1; } if(m==n) { p2=(struct aa *)malloc(sizeof(struct aa)); p1->next=p2; p2->next=NULLL; scanf("%c",&p2->a); break; } } return(head); /*返回链表的起始地址head*/ } int main() { int n; struct aa *p; printf("please input the number of characters that you want: "); scanf("%d",&n); p=creat(n); while(1) { printf("(%c)",p->a); p=p->next; if(p->next==NULLL) break; } getch(); }
[ 本帖最后由 将是高手 于 2011-11-19 14:14 编辑 ]