我正在创建一个程序,需要以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是一个单独的类,用于存储有关节点的数据,例如名。
答案 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;
本文可以为您提供帮助,完整的代码和解释