c++ listnode如何实现双向链表

avatar
作者
筋斗云
阅读量: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方法打印出整个链表的值。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!