我对c编程没有太多经验。我不明白这段代码中的错误是什么。在将此代码放到网上之前,我已经尝试了 5 次。请帮忙。我在这里实现了一个双向链表,其中有两个函数可以将节点添加到列表中,还有一个函数可以显示整个列表。编译成功后,如果我尝试添加一个节点,那么程序会意外结束。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct node
{
int data;
struct node* next;
struct node* prev;
};
void display_list(struct node* ptr);
void add_node(struct node* ptr)
{
if(ptr->next==NULL)
{
ptr=(struct node*)malloc(sizeof(struct node));
(ptr->next)->next=NULL;
(ptr->next)->prev=ptr;
}
else
{ //traverse the list
while(ptr->next!=NULL)
{
ptr=ptr->next;
}
(ptr->next)=(struct node*)malloc(sizeof(struct node));
(ptr->next)->next=NULL;
(ptr->next)->prev=ptr;
}
printf("\nEnter data : ");
scanf("%d",((ptr->next)->data));
display_list(ptr);
}
void display_list(struct node* ptr)
{
if(ptr->next==NULL)
{
printf("%d\n",ptr->data);
}
else
{
//traverse the list and display each node
while(ptr->next!=NULL)
{
printf("%d--->>>---",ptr->data);
ptr=ptr->next;
}
//display last node
printf("%d",ptr->data);
}
}
int main()
{
int choice;
struct node* start=NULL;
again:
printf("\n1) Add node");
printf("\n2) Display list");
scanf("%d",&choice);
if(choice==1)
add_node(start);
else if(choice==2)
display_list(start);
else
goto again;
return 0;
}