Доступ к нулевым указателям, чтобы проверить, является ли связанный список пустым в C++
Я беру курс по структурам данных с использованием C++, и мы должны реализовать простую структуру с одним связанным списком.
У меня есть все другие методы, но когда я проверяю, является ли список пустым, когда он на самом деле, программа падает, вызывая ошибку сегментации.
Когда список пуст, моя структура связанного списка должна выглядеть так:
HEAD -> NULL
Тогда как если он не пустой, он должен выглядеть так:
ГОЛОВА -> ...... -> NULL
Мой isListEmpty() выглядит так:
bool singleList::isListEmpty(void) {
return (head->next == NULL);
}
Я почти уверен, что ядро сбрасывается, когда я пытаюсь получить доступ к нулевому указателю, но я не уверен, где. Любые предложения о том, где я должен искать?
Благодарю.
--Edited--
Извините, я не достаточно ясно
Я уверен, что сама голова НЕ является нулевым указателем, потому что, проверяя, работает ли мой код, я работал с чем-то вроде:
list.list_insert_front(guy1);
list.list_insert_front(guy2);
list.list_remove(guy1);
list.list_remove(guy2);
list.isListEmpty(); //This line causes segmentation fault.
3 ответа
В большинстве случаев в пустом списке head
является null
не этоnext
,
Посмотрите дважды на инициализацию и решите, нужно ли вам проверять head
или этоnext
за null
ность.
Заголовок - это указатель, который отслеживает первый узел списка. Если список пуст, то head должен указывать на ноль.
Когда вы пытаетесь получить доступ к head->next, косвенно вы проверяете, существует ли следующий из первого узла (второго узла) или нет.
Чтобы узнать, пуст ли список или нет, вам нужно проверить, является ли head пустым.
bool singleList::isListEmpty(void) {
return (head == NULL);
}
Насколько я понимаю, даже если у вас должен быть отдельный головной узел, он будет нулевым каждый раз, когда список пуст.
Он будет указывать на первый узел списка только в том случае, если список не пуст.
пример:
СПИСОК: A->B->C->...->Z->null. В этом случае ваша голова будет указывать на A. (Скорее, ваша HEAD будет A. например, head = A)
СПИСОК: ноль (голова = ноль)