Для любого struct
быть узлом в linked-list
, вам нужно self-referential structure variable
, который должен быть объявлен как struct Node *next;
struct Node{
int *arr;
int *sol;
struct Node *next;
}
выделить память для узла связанного списка вам необходимо следующее:
/* allocate memory for a node */
struct Node * MyNode = (struct Node *)malloc((int)sizeof(struct Node));
if (MyNode == NULL) {
printf("ERROR: unable to allocate memory \n");
return 1;
}
/* allocate memory for the content of a node */
MyNode->arr = (int *) malloc((int)sizeof(int) * N);
if (MyNode->arr == NULL) {
printf("ERROR: unable to allocate memory \n");
return 1;
}
MyNode->sol = (int *) malloc((int)sizeof(int) * N);
if (MyNode->sol == NULL) {
printf("ERROR: unable to allocate memory \n");
return 1;
}
/* add the new node to a list by updating the next variable */
MyNode->next = ...
Если вы не уверены в операциях, которые необходимо выполнить для удаления узла в связанном списке, вы можете использовать переменную temp
, чтобы сделать то же самое более простым способом.
pop()
{
struct Node * temp = first;
first = first->next;
free(temp->arr);
free(temp->sol);
free(temp);
}
правила большого пальца руки для free
- для каждого malloc()
должно быть free()
Ото, чтобы пройти через различные сценарии в удалении узла в связанном списке, пожалуйста, обратитесь this ссылки.
Покажите нам настоящий код. –
На каком языке? Кроме того: существует ';' отсутствует в определении вашей структуры (* для обоих языков *). – wildplasser
Что дальше? Ваш 'Node' не содержит указатель' Next'. –