单链表(尾插入)创建链表时的问题
程序代码:
#include<stdio.h> #include<stdlib.h> typedef struct student{ int num; struct student *next; }Node; typedef struct _List{ Node* head; }List;//结构用来存储头指针 void add(List *Plist,int number);//创建链表的函数 void print(List *Plist);//遍历链表的函数 int main(void) { List list; list.head = NULL; int number; do{ scanf("%d",&number); if(number!=-1){ add(&list,number); } }while(number!=-1); printf("遍历整个链表\n"); print(&list);//打印整个链表 } void print(List *Plist) { Node *P = NULL; for(P = Plist->head; P; P = P->next){ printf("%d ",P->num); } printf("\n"); } void add(List *Plist,int number) { Node *P = (Node*)malloc(sizeof(Node)); P->num = number; P->next = NULL; Node *last = Plist -> head;(这里我原本写的是Node *last = NULL;) if(last){ while (last->next){ last = last->next; } last->next = P; } else { Plist->head = P; } }
在代码中标记的地方, Node *last = Plist -> head; 这一行我原本写的是Node *last = NULL;,因为在main里面list.head就是NULL,反正都是NULL为什么不能直接给Node *last赋上NULL呢
代码结果如下:
这个是错误的结果,遍历只显示最后一个
正确的是显示全部的
忘了free了
[此贴子已经被作者于2020-4-10 23:41编辑过]