Ошибка сегментации: 11 ошибок при реализации структуры данных двусвязного списка

#c #data-structures

#c #структуры данных

Вопрос:

При реализации этой структуры данных двусвязного списка я получаю ошибку Ошибка сегментации: ошибка 11.

Я опубликовал свой код в виде изображения ниже:

 #include<stdio.h>
#include<stdlib.h>
struct node
{
struct node* prev ; 
int data ; 
struct node* next ; 
}; 
struct node* first=NULL ; 
void create(int[],int);›
void display(struct node*);
int  main()
{
int A[]={ }; 
int cap ; 

printf("Enter how many elements do you want to insert in the Linked 
List :n");
scanf("%d",amp;cap); 

printf("Enter the elements that you want to insert in the Linked List 
in the form of a Array Stream :n");

for(int i=0 ; i<cap ; i  )
{
    scanf("%d",amp;A[i]);
}

create(A,cap); 
display(first);

}



void create(int A[],int n)
{
struct node* t ;                                

struct node* last ; 

first=(struct node*)malloc(sizeof(struct node));
first->data=A[0] ; 
first->prev=NULL ; 
first->next=NULL ; 
last=first ; 

for(int i=1 ; i<n ; i  )
{
t=(struct node*)malloc(sizeof(struct node));
t->data=A[i]; 
t->prev=last ; 
t->next=NULL ; 
last->next=t ; 
last=t ; 


}


}

void display(struct node* p ) 
{  
printf("n");
printf("The Elements that are present in the Linked List are :n");
while(p!=NULL)
{
    printf("%d-->",p->data);
    p=p->next ; 
}
  

}

Пока я пытаюсь запустить программу и предположим, например, что я вставляю 2-3 элемента в связанный список в виде массива, тогда он работает нормально, но когда я пытаюсь вставить более 3 элементов, это выдает ошибку Segmentation fault: 11

Комментарии:

1. Не размещайте изображения. Почтовый индекс

2. @deprirscher Я опубликовал код в виде изображения. Пожалуйста, взгляните

3. Нет, опубликуйте код в виде текста, чтобы мы могли увидеть его здесь и, возможно, скопировать в редактор и попробовать

4. Я пытался опубликовать код в виде текста, но Stackoverflow не позволяет мне вводить его в виде текста.

5. Да, это так. Просто скопируйте ее из своего редактора и вставьте в текстовую область, куда вы ввели свой вопрос

Ответ №1:

Вы должны объявить свой массив целых чисел после получения его размера от пользователя.

 printf("Enter how many elements do you want to insert in the Linked 
List :n");
scanf("%d",amp;cap); 

int A[cap];

printf("Enter the elements that you want to insert in the Linked List 
in the form of a Array Stream :n");

for(int i=0 ; i<cap ; i  )
{
  scanf("%d",amp;A[i]);
}
  

Комментарии:

1. Большое вам спасибо за помощь!!