C++单链表的插入和删除
时间: 2024-10-08 21:27:07 浏览: 34
在C++中,单链表是一种基础的数据结构,它由节点组成,每个节点包含数据和指向下一个节点的指针。以下是单链表的基本操作——插入和删除:
1. 插入操作:
- **在头部插入** (insert at beginning): 创建一个新的节点,并将其`next`指针指向当前头节点,然后将新的节点设置为新的头节点。
```cpp
void insertAtBegin(int data) {
Node* newNode = new Node(data);
newNode->next = head;
head = newNode;
}
```
- **在尾部插入** (append): 遍历到链表的最后一个节点,将其`next`指针指向新创建的节点。
```cpp
void insertAtEnd(int data) {
if (head == nullptr) {
head = new Node(data);
return;
}
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = new Node(data);
}
```
- **在指定位置插入** (insert at index): 需要遍历找到目标位置并调整指针。
2. 删除操作:
- **删除头节点** (delete from begin): 如果链表非空,直接让`head`指向第二个节点。
```cpp
void deleteFromBegin() {
if (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}
}
```
- **删除特定节点** (delete by value or pointer): 遍历查找目标值或节点,更新前一个节点的`next`指针。
```cpp
void deleteNode(Node* nodeToDelete) {
if (head == nodeToDelete) {
head = head->next;
} else {
Node* current = head;
while (current->next != nodeToDelete) {
current = current->next;
}
if (current->next != nullptr) {
current->next = current->next->next;
}
}
delete nodeToDelete;
}
```
阅读全文