用c++使用头插法创建单链表
时间: 2024-09-29 20:08:24 浏览: 39
在C++中,使用头插法(也称为链表的前驱插入)创建单链表非常直观,主要是通过定义节点结构体和链表头指针来完成。以下是一个基本的步骤和代码示例:
1. 定义节点结构体(Node),包含数据域(data)和指向下一个节点的指针(next):
```cpp
struct Node {
int data;
Node* next;
};
```
2. 创建链表头指针(head)并初始化为NULL:
```cpp
Node* head = nullptr;
```
3. 插入新元素时,先创建一个新的节点:
```cpp
Node* newNode = new Node();
newNode->data = value; // 设置新节点的数据
newNode->next = nullptr; // 初始化新节点的next指针为nullptr(表示它将是链表的第一个元素)
```
4. 将新节点插入到链表头部:
```cpp
if (head == nullptr) {
head = newNode; // 链表为空,直接设置头节点
} else {
newNode->next = head; // 非空链表,新节点链接到原头节点
head = newNode; // 更新头指针
}
```
5. (可选)释放内存:当不再需要链表时,记得释放每个节点:
```cpp
delete newNode;
```
下面是完整的代码实现:
```cpp
#include <iostream>
// 定义节点结构体
struct Node {
int data;
Node* next;
};
// 创建并插入节点到链表头部
void insertAtHead(Node*& head, int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = head;
head = newNode;
}
int main() {
Node* head = nullptr; // 初始化头指针
// 插入元素示例
insertAtHead(head, 5); // 链表现在是 [5]
insertAtHead(head, 3); // 链表现在是 [3, 5]
insertAtHead(head, 7); // 链表现在是 [7, 3, 5]
// 打印链表
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << "\n";
return 0;
}
```
阅读全文