我試圖讓我的刪除功能爲雙向鏈接列表工作。我覺得我的代碼是正確的,但它一直在打破。我相信當我刪除節點時它有事要做,但我不確定編譯器是否一直在使用throw.cpp?所以我不太確定最新的錯誤。這裏是我的代碼:刪除雙列表上的功能
ItemType remove(int index)
{
ItemType name;
Node* temp;
Node* current;
int pos = 0;
int endpos = size - 1;
if (index >= 0 && index <= size)
{
if (index == 0)
{
temp = head;
delete head;
head = temp->next;
size--;
name = temp->info;
return name;
}
else if (index == size - 1)
{
temp = tail;
delete tail;
tail = temp->prev;
size--;
name = temp->info;
return name;
}
else if (index <= size/2)
{
current = head;
while (pos != index)
{
current = current->next;
pos++;
}
}
else if (index > size/2)
{
current = tail;
while (endpos != index)
{
current = current->prev;
endpos--;
}
}
}
temp = current;
current->prev->next = current->next;
current->next->prev = current->prev;
delete current;
size--;
name = temp->info;
return name;
}
如果任何人都可以看到什麼可能是甜的問題。
這是完美的,謝謝。我是否需要將任何內容分配給NULL,例如,如果我有一個列表,並最終一次刪除整個列表中的一個節點? – DrackBlagon
當列表被全部刪除時,將'head'和'tail'設置爲'NULL'也是一件好事。 – rcs
很酷,這是我最終做的和它的工作,再次感謝。 – DrackBlagon