用C++建立一个循环双链表
时间: 2024-03-22 21:41:12 浏览: 68
用C++实现的双向循环链表
以下是一个简单的C++循环双链表的实现:
```c++
#include <iostream>
using namespace std;
class Node{
public:
int data;
Node *next;
Node *prev;
Node(int d){
data = d;
next = NULL;
prev = NULL;
}
};
class DoublyLinkedList{
private:
Node *head;
public:
DoublyLinkedList(){
head = NULL;
}
void insert(int d){
Node *newNode = new Node(d);
if(head == NULL){
head = newNode;
head->next = head;
head->prev = head;
}
else{
Node *temp = head->prev;
newNode->next = head;
newNode->prev = temp;
temp->next = newNode;
head->prev = newNode;
}
}
void display(){
if(head == NULL){
cout << "List is empty\n";
return;
}
Node *temp = head;
cout << "List: ";
do{
cout << temp->data << " ";
temp = temp->next;
}while(temp != head);
cout << endl;
}
};
int main(){
DoublyLinkedList dll;
dll.insert(1);
dll.insert(2);
dll.insert(3);
dll.insert(4);
dll.display();
return 0;
}
```
在这个实现中,节点类Node有三个属性:数据data、指向下一个节点的指针next、指向前一个节点的指针prev。DoublyLinkedList类有一个私有属性head,用来指向链表的头节点。
在insert函数中,如果链表为空,新节点作为头节点,同时它的next和prev都指向自己。否则,找到链表的尾节点,将新节点插入链表尾部,使得链表成为循环双链表。
在display函数中,从头节点开始遍历链表,直到返回到头节点,输出所有节点的数据。
在main函数中,创建一个DoublyLinkedList对象,插入四个节点,并输出链表中所有节点的数据。
阅读全文