#include <stdio.h>#include <stdlib.h>struct node{int data;struct node *next; };struct node *add(struct node *head);//創(chuàng)建節(jié)點 void display(struct node *head);//輸出鏈表每項數(shù)據(jù) int main(){char ans;struct node *mylink=NULL;printf("要加入新的節(jié)點嗎?");scanf(" %c",&ans);while(ans!='n'){mylink=add(mylink);printf("要再加入新的節(jié)點嗎?");scanf(" %c",&ans); } display(mylink);} struct node *add(struct node *head){int data;struct node *pr=(struct node *)malloc(sizeof(struct node)); if(head==NULL){head=pr;printf("輸入數(shù)據(jù)"); scanf(" %d",&(head->data));head->next=NULL;}else{struct node *p=head;while(p->next !=NULL) //這里不是也有p->next!= NULL嗎? {p=p->next;}printf("輸入數(shù)據(jù)"); scanf(" %d",&(p->data));p->next=NULL;}}void display(struct node *head){struct node *p=head;while(p != NULL) // 為什么改成 while(p->next!= NULL) 程序就會崩潰,而且不能調(diào)試,我發(fā)現(xiàn)在display函數(shù)里只要有 這一句程序就會崩潰,而上面的42行卻沒有問題 {printf("%d",p->data);p=p->next;}}
關(guān)于c語言初學(xué)鏈表問題,問題在注釋里?
月關(guān)寶盒
2018-07-16 09:06:52