Я пытаюсь создать простой односвязный список. Раньше я успешно делал это без ошибок, однако теперь я сталкиваюсь с ошибкой. Я подозреваю, что есть какая-то проблема с выделением памяти из-за оператора if
в строке 23.
Что я пробовал:
Я использовал typecasting во всех моих объявлениях, хотя в C. это не обязательно.
Я удалил оператор if
и все еще сталкивался с ошибками.
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int value;
struct Product *next;
} Product;
int main()
{
int user_choice;
Product *head;
head = malloc(sizeof(Product));
head->next = NULL;
head->value = 5;
printf("\n Do you want to add a new node (0 for no, 1 for yes)? \n");
scanf("%d", &user_choice);
if (user_choice == 1) // line 23
{
head->next = malloc(sizeof(Product));
if (!head->next)
printf("\n Memory allocation failed! \n");
head->next->next = NULL; // 1st error
printf("\n Enter a value: \n");
int value;
scanf("%d", &value);
head->next->value = value; // 2nd error
}
free(head);
free(head->next);
}