問題がどこにあるのかわかりませんが、この単独リンクリストをクリアできません。私は私が考えることができるすべてについて試みました。私は1つの要素(実際にはリンクされたリストのハッシュテーブル)でリストをテストしていますが、私の "erase()"関数は機能しません(リスト全体を消去し、各ノードを削除します)。あなたがこれを見て正しい方向に向けることができれば。単一リンクリストの消去
ノード構造
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;
}
}
マイadd関数
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();
}
を(右消去機能の前に使用)。
おかげ
'if'以外の文の代わりに' else'を持っているのですか?それが唯一の立場にあるので、 'delete'を' NULL'と呼ぶと思います。 – Flexo
回答を更新しました – 2r2w