Метод добавления в связанный список

0

Я программист на языке python, который довольно новичок в C++, и я пытаюсь написать связанный список в первый раз.

В моей книге мне написано это так...

ListNode *node, *newNode = new ListNode(x);
if (head_ != NULL) {
    node = _find (size_ - 1);
    node->link_ = newNode;
}
else {
    head_ = newNode;
}
size_ += 1;

это имеет смысл, но это кажется более сложным, чем мой первоначальный подход...

void LList::append(ItemType x)
{
    ListNode *node=head_, *newNode = new ListNode(x);
    while (node->link_ != NULL) {
        node = node->link_;
    }
    node->link_ = newNode;
    size_ += 1;
}

К сожалению, я получаю странное сообщение, когда пытаюсь запустить его на X-Code для Mac OSx Mountain lion.

Thread: 1 EXC_BAD_ACCESS(code=1, address=0x8)

Может ли кто-нибудь объяснить мне, что это значит?

  • 0
    Возможно, я только что понял это. Может ли это быть потому, что я установил node = head_, но поскольку в head_ ничего нет, программа запуталась ??
  • 0
    связанный список мет?
Показать ещё 4 комментария
Теги:
linked-list

1 ответ

2
Лучший ответ

Если список пуст, head_ является NULL или неинициализирован, и ваш код не проверяет эту возможность. Ваш код попытается прочитать head_->link_, который не выделен, что head_->link_ к ошибке доступа к памяти.

  • 0
    +1 звучит о праве. Другая возможность состоит в том, что head_ даже не инициализирован.
  • 0
    @unsigned Я заменил это, и я все еще получаю код ошибки. На этот раз совершенно другим методом, который работал раньше!
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню