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

Я новичок в структурах данных и алгоритмах. Я пытался реализовать программу на основе меню для односвязного списка, где я пытался реализовать функции create () и display () в связанном списке. Функция создания работает гладко, но когда я пытаюсь выполнить функцию display (), для отображения всех элементов связанного списка, я получаю сообщение об ошибке «Ошибка сегментации: ошибка 11».

Пожалуйста, помогите мне с этим !!

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

    while(1)
    {
    printf("The List of Options that are available to you are :\n");
    printf("\n1.Create a Linked List from Starting \n");


    printf("\n2.Display all the elements of the Linked List\n");
    printf("\n3.Exit from this Menu Driven Program\n");

    printf("\n Enter the Choice that you want to opt for :\n");
    scanf("%d",&ch);


    switch(ch)
    {
        case 1:create();
                break ; 



        case 2:display();
                break ; 

        case 3:exit(0);
                break ; 

        printf("\n The Choice you have Opted for is Not Available\n");
                break ;                                         
    }
}

}



void create()
{
    printf("Enter how many elements you want to insert in the Linked List :\n");
    scanf("%d",&cap);

    int A[cap]; 

    printf("\nNow , Enter the elements that you want to insert in the Linked List :\n");

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


    struct node* t ;
    struct node* last ;


    first=(struct node*)malloc(sizeof(struct node));

    first->data=A[0];

    first->next=NULL ; 
    last=first ;

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

    } 

}


void display(struct node* p )
{


    while(p!=NULL)
    {
        printf("%d-->",p->data);
        p=p->next ; 
    }
}
...