#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *add(struct node *head);//创建节点
void display(struct node *head);//输出链表每项数据
int main()
{
char ans;
struct node *mylink=NULL;
printf("要加入新的节点吗?");
scanf(" %c",&ans);
while(ans!='n')
{
mylink=add(mylink);
printf("要再加入新的节点吗?");
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("输入数据");
scanf(" %d",&(head->data));
head->next=NULL;
}
else
{
struct node *p=head;
while(p->next !=NULL) //这里不是也有p->next!= NULL吗?
{
p=p->next;
}
printf("输入数据");
scanf(" %d",&(p->data));
p->next=NULL;
}
}
void display(struct node *head)
{
struct node *p=head;
while(p != NULL) // 为什么改成 while(p->next!= NULL) 程序就会崩溃,而且不能调试,我发现在display函数里只要有 这一句程序就会崩溃,而上面的42行却没有问题
{
printf("%d",p->data);
p=p->next;
}
}
DIEA
相关分类