我無法弄清楚我的問題在哪裏,但我無法清除這個單獨鏈接的列表。我嘗試過所有我能想到的事情。我測試它與一個元素的列表(實際上是一個鏈表的哈希表),但我不能讓我的「擦除()」功能工作(它會清理整個列表並刪除每個節點)。如果你可以看看這個,並指向正確的方向。清除單個鏈接列表
節點結構
struct Node
{
string m_str;
Node *m_pNext;
Node(void) {m_pNext = NULL;}
};
Node *m_pHead;
擦除功能
Void LLString::erase (void){
if (!m_pHead)
{
return;
}
Node *temp = m_pHead;
while (temp)
{
temp = m_pHead; // The error allways shoes up around her
if (temp->m_pNext) // It has moved around a little as I have tried
{ // different things. It is an unhanded exception
m_pHead = temp->m_pNext;
}
temp->m_pNext = NULL;
delete temp;
}
}
我的附加功能
void LLString::add (string str)
{
Node *nNode = new Node;
nNode -> m_str = str;
nNode ->m_pNext = m_pHead;
m_pHead = nNode;
}
目前我正在使用該程序的唯一的另一個功能是這個函數發送一切都歸檔。 (使用擦除功能前右)
void LLString::toFile (void)
{
ofstream fout;
fout.open ("stringData.txt",ios::app);
Node* temp = m_pHead;
while (temp)
{
fout << temp->m_str << endl;
temp = temp->m_pNext;
}
fout.close();
}
與此同時,如果你有任何想法,爲什麼刪除不工作,請指出來給我。
感謝
你的意思是在那裏有'else'而不是'if'之外的語句嗎?就目前來看,你會稱'delete'爲'NULL'。 – Flexo 2012-02-24 21:06:01
我已經更新了答案 – 2r2w 2012-02-25 07:20:56