Я новичок в структурах данных и алгоритмах.
Я пытался реализовать программу на основе меню для односвязного списка, где я пытался реализовать функции 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 ;
}
}