Как исправить ошибку, которую я получаю при запуске программы? Im пытается сделать головную точку на адрес первого, а затем сможет передать * сначала через функцию, в которой будет создан новый узел, пользователь может предоставить ему данные во время выполнения, а затем сначала укажет на новый узел ! Правильно ли я это делаю?C связанный список и узловая программа, почему я получаю исключение?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void addToStart (struct node** head);
void Menu();
void DisplayList(struct node* head);
struct node{
int data;
struct node *next;
};
void main(){
int option = 0;
struct node *head;
struct node *first;
head = (struct node*)malloc(sizeof(struct node));
first = (struct node*)malloc(sizeof(struct node));
head->data= 0;
head->next = first;
first->data = 1;
first->next = NULL;
Menu();
scanf(" %d", option);
while(option != 6){
switch(option){
case 1:
addToStart(&first);
break;
case 3:
DisplayList(head);
break;
case 6:
exit(0);
break;
default:
printf("\nTry Again");
break;
}//switch end
}//while end
}
void addToStart (struct node** first)
{
struct node *newNode;
newNode = (struct node*)malloc(sizeof(struct node));
printf("\nEnter data for this node");
scanf("%d", &newNode->data);
newNode->next = *first;
*first = newNode; // transfer the address of newNode' to 'head'
}
void Menu(){
printf("1) Add a node.\n");
printf("3) Display all nodes.\n");
printf("6) Exit.\n");
}
void DisplayList(struct node* head){
struct node *temp;
temp =(struct node*)malloc(sizeof(struct node));
temp = head;
while(temp!= NULL)
{
printf("Data: %d", temp->data); // show the data
temp = temp->next;
}
}
где и какие ошибки, пожалуйста? –
'temp = (struct node *) malloc (sizeof (struct node)); temp = head; 'Это, вероятно, не связано с вашей ошибкой, но если вы устанавливаете' temp' 'head', то первая строка не нужна и приводит к утечке памяти. –
и 'addToStart (& first);' -> 'addToStart (&head);'?, 'While (option! = 6) {': never update 'option' – BLUEPIXY