在C ++中创建一个双向链表

时间:2016-03-30 15:36:03

标签: c++ pointers doubly-linked-list

我正在创建一个程序,需要以CSV格式从电子表格中读取数据并将其分配给C ++中的双向链表。我创建了一个单链表,但我对如何使用感到茫然这个想法制作一个双重链表。我知道你需要一个先前的指针,但我不确定实际实现代码。

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

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是一个单独的类,用于存储有关节点的数据,例如名。

1 个答案:

答案 0 :(得分:2)

每个列表节点必须具有指向前一个和下一个列表节点的指针。 然后List是List Nodes的容器,链接在一起作为链。

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方法。 棘手的部分是删除方法。存储要删除的上一个节点和下一个节点的两个指针,然后将它们相应地分配给上一个节点和后一个节点:

ListNode *after = node->next;
ListNode *before = node->prev;
after->prev = before;
before->next = after;

本文可以为您提供帮助,完整的代码和解释

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