c++ 中链表如何创造和访问
时间: 2024-09-12 10:17:38 浏览: 35
在 C++ 中,链表是一种数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。创建和访问链表通常分为以下几个步骤:
**1. 创建链表头结点(如果需要)**:
- 如果要创建一个空链表,可以先创建一个表示头节点的 `Node` 结构体,并将其 `next` 指针设为 `nullptr`。
```cpp
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
```
**2. 添加节点(动态内存分配)**:
- 定义一个函数用于插入新节点,比如插入到列表的开头、中间或结尾。
```cpp
void insertAtEnd(Node*& head, int value) {
if (head == nullptr) {
head = new Node{value, nullptr}; // 创建并初始化新节点
} else {
Node* newNode = new Node{value, nullptr}; // 创建新节点
newNode->next = head; // 将新节点的 next 指向当前头节点
head = newNode; // 更新头节点
}
}
```
**3. 访问链表**:
- 可以通过遍历链表来访问节点的数据。例如,从头开始逐个访问每个节点。
```cpp
void printList(Node* head) {
while (head != nullptr) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
```
**4. 删除节点**:
- 还需要提供删除节点的功能,例如删除指定值的节点,这涉及修改前后节点的指针。
```cpp
void deleteNode(Node*& head, int value) {
if (head == nullptr) return;
if (head->data == value) {
Node* temp = head;
head = head->next;
delete temp; // 释放已删除节点的内存
return;
}
Node* current = head;
while (current->next != nullptr && current->next->data != value) {
current = current->next;
}
if (current->next != nullptr) {
current->next = current->next->next;
delete current->next; // 释放已删除节点的内存
}
}
```