首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在双向链表的尾部插入

在双向链表的尾部插入
EN

Stack Overflow用户
提问于 2012-10-09 08:12:15
回答 3查看 7.8K关注 0票数 1

我第一次使用链表,必须创建一个可以在双向链表末尾插入节点的函数。到目前为止,我已经

代码语言:javascript
运行
复制
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,但在函数执行后应指向创建的新节点。

EN

Stack Overflow用户

发布于 2012-10-09 08:20:07

在不知道插入操作(顺便说一下,实际上是追加而不是插入)之前的列表状态的情况下,很难判断是什么导致了错误。

很有可能你不是在处理最初追加到一个空列表的情况。基本的算法是(一个空的列表由一个空的头指针表示,其他的都是不确定的):

代码语言:javascript
运行
复制
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 = node
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12791186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档