我第一次使用链表,必须创建一个可以在双向链表末尾插入节点的函数。到目前为止,我已经
void LinkedList::insertAtTail(const value_type& entry) {
    Node *newNode = new Node(entry, NULL, tail);
    tail->next = newNode;
    tail = newNode;
    ++node_count;
}Node类按顺序接受要存储的值、下一个要指向的指针的值和前一个指针的值。每当我尝试在此处插入节点时,我都会得到一个错误,指出存在未处理的异常,并且在写入位置0x00000008时出现访问冲突。
我不完全确定这里出了什么问题,但我认为这与根据错误消息取消对空指针的引用有关。如果你能帮助我解决这个问题,我将不胜感激。
编辑:
我应该早点澄清,tail是一个指向列表中最后一个节点的指针。Tail->next访问最后一个节点的下一个变量,该变量在函数运行之前指向NULL,但在函数执行后应指向创建的新节点。
发布于 2012-10-09 08:20:07
在不知道插入操作(顺便说一下,实际上是追加而不是插入)之前的列表状态的情况下,很难判断是什么导致了错误。
很有可能你不是在处理最初追加到一个空列表的情况。基本的算法是(一个空的列表由一个空的头指针表示,其他的都是不确定的):
def append (entry):
    # Common stuff no matter the current list state.
    node = new Node()
    node->payload = entry
    node->next = NULL
    # Make first entry in empty list.
    if head = NULL:
        node->prev = NULL
        head = node
        tail = node
        return
    # Otherwise, we are appending to existing list.
    next->prev = tail
    tail->next = node
    tail = nodehttps://stackoverflow.com/questions/12791186
复制相似问题