Я не слишком опытен с программированием на языке 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;
}
А, я понимаю, что ты сделал. Также действительный вариант: –