新手,请大佬看看这个生成单链表,为什么输出后还有一串数???
这个单链表输出,都会带一段数字,前面的数符合条件了,可是后面还有一段数,不明白怎么出现的,链表为我也赋值空指针了,测试输出循环体也是循环了符合条件的次数,请大佬教教新手。程序代码:
#include<stdio.h> #include<malloc.h> typedef struct node{ int key; struct node *next; }nodetype; nodetype* inicial(nodetype* base); void print(nodetype* base); int main(){ nodetype *base=NULL; int n; base=inicial(base); print(base); return 0; } nodetype* inicial(nodetype* base){ nodetype *q=NULL,*p=NULL; int x; q=(nodetype*)malloc(sizeof(nodetype)); base=q; p=base; scanf("%d",&x); do{ p->key=x; q=(nodetype*)malloc(sizeof(nodetype)); p->next=q; p=p->next; p->next=NULL; scanf("%d",&x); }while(x!=0); p->next=NULL; return base; } void print(nodetype* base){ nodetype *tmp=base; while(tmp!=NULL){ printf("%d",tmp->key); tmp=tmp->next; } }
输入 5 4 2 1 3 0 应该输出 54213
可是却输出543211726400
另一道删除节点的题,也是相同的差不多的给链表赋值,和输出也是这样的问题。