Я не могу понять, где моя проблема, но я не могу очистить этот односвязный список. Я перепробовал все, что мог придумать. Я тестирую его со списком с одним элементом (на самом деле это хеш-таблица связанных списков), но я не могу заставить работать мою функцию "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;
}
}
Моя функция добавления
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();
}
Опять же, если у вас есть идея, почему это удаление не работает, укажите мне.
Спасибо