用c++创建一个长度为n的双向循环链表
时间: 2024-09-25 13:20:47 浏览: 51
如何用C++实现双向循环链表
在 C++ 中创建一个长度为 n 的双向循环链表,首先需要定义结构体 Node 作为链表节点,以及包含头结点的链表类。以下是简单的步骤:
```cpp
// 定义链表节点
struct Node {
int data;
Node* prev;
Node* next;
};
// 双向循环链表类
class DoublyCircularLinkedList {
private:
Node* head; // 链表头结点指针
int size; // 链表长度
public:
// 构造函数,初始化空链表
DoublyCircularLinkedList() : head(nullptr), size(0) {}
// 添加元素到链表尾部
void addNode(int value) {
if (head == nullptr) {
head = new Node();
head->data = value;
head->prev = head;
head->next = head;
} else {
Node* newNode = new Node();
newNode->data = value;
newNode->prev = head->prev;
newNode->next = head;
head->prev->next = newNode;
head->prev = newNode;
++size;
}
}
// 获取链表长度
int getSize() const { return size; }
// 示例:遍历并打印链表
void traverse() {
Node* current = head;
do {
std::cout << current->data << " ";
current = current->next;
} while (current != head);
std::cout << std::endl;
}
};
```
使用这个链表类,你可以像下面这样创建和操作一个长度为 n 的双向循环链表:
```cpp
int main() {
DoublyCircularLinkedList list;
for (int i = 1; i <= n; ++i) {
list.addNode(i);
}
list.traverse(); // 打印链表
std::cout << "List size: " << list.getSize() << std::endl;
return 0;
}
```
阅读全文