У меня есть заголовок, который объявляет стек и список. Я пытаюсь добавить узел застрял в списке, но я не могу этого сделать. Может кто-нибудь помочь мне понять, почему эта функция не работает?Почему я получаю ошибки при попытке вставить новый узел в список
**** как эти коды declerations в заголовках ***
/* a link that contains a positive integer value*/
struct link
{
int value;
struct link *next;
};
typedef struct link link;
typedef struct
{
link *head;
} linkedList;
/* a positive-integer value stack, with no size limit */
typedef struct stack
{
int count;
int maxSize;
bool empty;
linkedList* list;
} stack;
Теперь то, что я пытаюсь сделать это:
void add(linkedList *list, int newValue)
{
linkedList* temp = list;
while (temp->head)
{
temp->head = temp->head->next;
}
temp->head->next->value = newValue; //<---- this line is making the error
}
// add new link in the beginning of list with newValue in it
Не знаете, что вы подразумеваете под «не работает». Можете ли вы объяснить, что он делает и что вы ожидаете от него? Одна очевидная проблема заключается в том, что цикл 'while' заканчивается, когда' temp-> head' является 'NULL', а затем в самом следующем после цикла' while' вы пытаетесь использовать 'temp-> head_> next' ie '(NULL) -> next'. Это проблематично. Аналогично, вы устанавливаете' temp1' в 'NULL', никогда не изменяете его в цикле' while', а затем пытаетесь получить доступ к 'temp1-> head' ie '(NULL) -> head'. Вы можете проверить все это, если y ou запустите свою программу в отладчике. – crayzeewulf
does not work означает, что каждый раз, когда я пытаюсь поместить другую ссылку внутри списка, который находится внутри стека, он не работает, он дает мне ошибку messege и показывает мне, что параметры sub head (value) и (next) can not считываются в памяти , но что касается того, что вы сказали ранее, я могу удалить temp1, но что мне делать с этим? – TotalyNotUbisoft
Пожалуйста, добавьте точное сообщение об ошибке (например, копирование и вставка) в вопрос. – crayzeewulf