【发布时间】:2019-04-01 07:28:20
【问题描述】:
我目前正在尝试在 cygwin64 上用 c++ 语言编写一个双向链表类。我的 addToTail 函数(将节点添加到列表末尾)会导致核心转储。我已经确定了执行此操作的代码行,但无法找出原因。
我已将我的代码剥离为最简单的形式,以找出问题所在。我已将其标识为current->setNext(temp); 行。
以下是所有相关代码
class Node
{
private:
classType data;
Node* next;
Node* previous;
public:
void Node::setData(const valueType& newData)
{
data = newData;
}
void Node::setNext(Node* newNext)
{
next = newNext;
}
void Node::setPrevious(Node* newPrevious)
{
previous = newPrevious;
}
};
class LinkedList
{
private:
Node* tail;
Node* head;
Node* current;
public:
void LinkedList::addToTail(const classType& newTail)
{
Node* temp = new Node;
temp->setData(newTail);
current = tail;
temp->setPrevious(current);
current->setNext(temp);
tail = temp;
delete temp;
}
};
该函数的预期结果是在列表末尾添加一个新节点。发生的情况是它会导致核心转储。
【问题讨论】:
标签: c++ doubly-linked-list coredump