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

При реализации этой структуры данных двусвязного списка я получаю ошибку сегментации: ошибка 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",&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",&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 элементов, этодает мне ошибку сегментации: ошибка 11

1 Ответ

1 голос
/ 30 марта 2019

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

printf("Enter how many elements do you want to insert in the Linked 
List :\n");
scanf("%d",&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",&A[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...