首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中创建双向链表

在C++中创建双向链表
EN

Stack Overflow用户
提问于 2016-03-30 23:36:03
回答 1查看 1K关注 0票数 0

我正在创建一个程序,它需要从CSV格式的电子表格中读取数据,并将其分配给C++.I中的双向链表。我已经创建了一个单向链表,但是我不知道如何使用这个想法来制作一个双向链表。我知道你需要一个前一个指针,但我不确定是否真正实现了代码。

我的单链表的代码:添加到列表中:

代码语言:javascript
复制
if (!m_head)
{
    m_head = new Node(name, reference,latitude,longitude);
}
else
{
    Node *current = m_head;
    while (current->getNext() != 0)
    {
        current = current->getNext();
    }
    current->setNext(new Node(name, reference,latitude,longitude));
}

请注意: Node是一个单独的类,用于存储有关节点的数据,例如名称。

EN

回答 1

Stack Overflow用户

发布于 2016-03-30 23:47:20

每个列表节点必须有一个指向上一个和下一个列表节点的指针。然后,列表是列表节点的容器,以链的形式链接在一起。

代码语言:javascript
复制
struct ListNode;

typedef struct ListNode {
    struct ListNode *next;
    struct ListNode *prev;
    void *value;
} ListNode;

typedef struct List {
    int count;
    ListNode *first;
    ListNode *last;
} List;

然后,您需要相应地实现方法push和pop.棘手的部分是remove方法。存储要删除的上一个节点和下一个节点的两个指针,然后将它们相应地分配给上一个节点和下一个节点:

代码语言:javascript
复制
ListNode *after = node->next;
ListNode *before = node->prev;
after->prev = before;
before->next = after;

这篇文章可能对你有帮助,完整的代码和解释

http://c.learncodethehardway.org/book/ex32.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36313493

复制
相关文章

相似问题

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