2013-12-21 87 views
0

我是一個相當新的C++的python程序員,並且我試圖第一次編寫鏈表。鏈接列表附加方法

我的書是我寫它像這樣...

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獅子的X-Code上運行這個消息時出現一個奇怪的消息。

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

任何人都可以向我解釋這是什麼意思?

+0

我可能只是想通了。這可能是因爲我設置了node = head_,但是因爲head_中沒有任何東西,但是程序混淆了? –

+0

鏈接列表方法? – OmnipotentEntity

+0

請注意,您可以使用'std :: list'。而且這樣做很少。 'std :: vector'通常更快,更方便... –

回答

2

如果列表爲空,head_爲NULL或未初始化,並且您的代碼不檢查這種可能性。您的代碼將嘗試讀取未分配的head_->link_,並拋出內存訪問錯誤。

+0

+1聽起來正確。另一種可能性是'head_'甚至沒有初始化。 –

+0

@未註冊我用它替換它,我仍然得到一個錯誤代碼。這一次採用了以前工作過的完全不同的方法! –

+0

想我想通了!謝謝!! –