阅读量:0
在C++中实现双向链表可以通过定义一个ListNode结构体来实现,该结构体包含三个成员变量:值val、指向下一个节点的指针next和指向前一个节点的指针prev。
以下是一个简单的双向链表的实现示例:
#include <iostream> struct ListNode { int val; ListNode* next; ListNode* prev; ListNode(int x) : val(x), next(nullptr), prev(nullptr) {} }; class DoubleLinkedList { private: ListNode* head; ListNode* tail; public: DoubleLinkedList() : head(nullptr), tail(nullptr) {} void insertAtHead(int val) { ListNode* newNode = new ListNode(val); if (head == nullptr) { head = newNode; tail = newNode; } else { newNode->next = head; head->prev = newNode; head = newNode; } } void insertAtTail(int val) { ListNode* newNode = new ListNode(val); if (tail == nullptr) { head = newNode; tail = newNode; } else { newNode->prev = tail; tail->next = newNode; tail = newNode; } } void printList() { ListNode* current = head; while (current != nullptr) { std::cout << current->val << " "; current = current->next; } std::cout << std::endl; } }; int main() { DoubleLinkedList dl; dl.insertAtHead(1); dl.insertAtTail(2); dl.insertAtTail(3); dl.printList(); return 0; }
在上面的示例中,定义了一个DoubleLinkedList类来实现双向链表的基本操作,包括在链表头部插入节点和在链表尾部插入节点。通过调用insertAtHead和insertAtTail方法可以向双向链表中插入节点,然后通过printList方法打印出整个链表的值。