我的 pop_back() 函数应该删除双向链表中的最后一个元素。但是,我当前的代码删除了最后两个元素,而不仅仅是一个。我已经设置了类似于这个的 pop_front() 函数,它工作得很好。我很难弄清楚我做错了什么。
这是我的带有结构节点的链表头的一部分:
class linkedlist
{
private:
struct Node{
Node* next;
Node* prev;
element_type data;
};
Node* head;
Node* tail;
unsigned int numElements;
我的 pop_back() 函数来自链表的公共部分:
void linkedlist::pop_back()
{
if (empty())
return;
else {
Node *delBack = tail;
Node *nodeToDelete = delBack;
delBack = delBack->prev;
delBack->next = NULL;
delete nodeToDelete;
tail = delBack;
numElements--;
}
}
如果问题不是很明显,那么错误可能隐藏在代码的其他地方。仍在搜索中。