请写一个C++程序,建立一个简单的双向链表
时间: 2024-09-23 07:00:58 浏览: 36
在C++中,我们可以使用结构体表示链表节点,并定义两个指针来实现双向链表。这里是一个简单的示例:
```cpp
#include <iostream>
// 定义链表节点
struct Node {
int data; // 节点数据
Node* prev; // 指向前一个节点
Node* next; // 指向后一个节点
};
// 初始化一个新节点
Node* createNode(int value) {
Node* newNode = new Node;
if (newNode == nullptr) {
std::cout << "Memory allocation failed." << std::endl;
return nullptr;
}
newNode->data = value;
newNode->prev = nullptr;
newNode->next = nullptr;
return newNode;
}
// 插入节点到链表
void insertNode(Node** head, int value) {
if (*head == nullptr) {
*head = createNode(value);
} else {
Node* newNode = createNode(value);
newNode->next = *head;
(*head)->prev = newNode;
*head = newNode;
}
}
// 打印链表
void printList(Node* head) {
while (head != nullptr) {
std::cout << head->data << " ";
head = head->next;
}
std::cout << std::endl;
}
int main() {
Node* head = nullptr;
// 插入一些元素
insertNode(&head, 1);
insertNode(&head, 2);
insertNode(&head, 3);
insertNode(&head, 4);
// 打印链表
std::cout << "List elements: ";
printList(head);
return 0;
}
```
这个程序首先创建了一个双向链表的头节点,然后插入了几个整数值。`insertNode`函数用于在链表的头部添加新的节点,而`printList`函数则遍历整个链表并打印出节点值。
阅读全文