链接列表追加方法

时间:2013-12-21 22:38:10

标签: c++ linked-list

我是一个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;
}

不幸的是,当我尝试在Mac OSx Mountain Lion的X-Code上运行它时,我收到一条奇怪的信息。

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

有人能解释一下这意味着什么吗?

1 个答案:

答案 0 :(得分:2)

如果列表为空,head_为NULL或未初始化,并且您的代码不会检查该可能性。您的代码将尝试读取未分配的head_->link_,从而导致内存访问错误。