怎么创建一个双向循环链表,用C++
时间: 2023-08-16 20:55:16 浏览: 94
c++语言实现双向循环链表
要创建一个双向循环链表,你可以使用C++中的类来实现。下面是一个简单的示例代码:
```cpp
#include <iostream>
using namespace std;
// 双向循环链表节点类
class Node {
public:
int data;
Node* prev;
Node* next;
};
// 双向循环链表类
class DoublyLinkedList {
private:
Node* head;
public:
// 构造函数
DoublyLinkedList() {
head = nullptr;
}
// 在链表尾部插入节点
void insert(int value) {
// 创建新节点
Node* newNode = new Node();
newNode->data = value;
if (head == nullptr) {
// 如果链表为空,将新节点设为头结点
newNode->prev = newNode;
newNode->next = newNode;
head = newNode;
} else {
// 将新节点插入到链表尾部
Node* tail = head->prev;
tail->next = newNode;
newNode->prev = tail;
newNode->next = head;
head->prev = newNode;
}
}
// 打印链表
void display() {
if (head == nullptr) {
cout << "链表为空" << endl;
return;
}
Node* current = head;
do {
cout << current->data << " ";
current = current->next;
} while (current != head);
cout << endl;
}
};
int main() {
DoublyLinkedList dll;
dll.insert(1);
dll.insert(2);
dll.insert(3);
dll.display();
return 0;
}
```
在上述代码中,我们定义了一个`Node`类来表示双向循环链表的节点,包含节点的数据、指向前一个节点的指针`prev`和指向后一个节点的指针`next`。
然后,我们定义了`DoublyLinkedList`类来表示双向循环链表,其中包含一个指向头结点的指针`head`。在该类中,我们实现了一个`insert`方法来插入新节点到链表尾部,并且处理了链表为空和非空的情况。还实现了一个`display`方法来打印链表中的所有节点。
在`main`函数中,我们创建了一个`DoublyLinkedList`对象`dll`,并在其中插入一些节点,然后调用`display`方法打印链表中的节点值。
这样就完成了一个简单的双向循环链表的创建和打印。你可以根据需要在该基础上添加其他操作,如删除节点、查找节点等。
阅读全文