c++线性链表查找插入和删除代码
时间: 2024-10-09 21:06:14 浏览: 20
在C++中,线性链表是一种基础的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。下面是查找、插入和删除操作的基本代码示例:
**1. 查找(Search):**
```cpp
// 定义链表节点
struct Node {
int data;
Node* next;
};
// 查找函数 (如果没有找到返回 nullptr)
Node* search(Node* head, int value) {
Node* current = head;
while (current != nullptr) {
if (current->data == value) {
return current;
}
current = current->next;
}
return nullptr; // 没有找到值
}
```
**2. 插入(Insertion):**
```cpp
void insertAtBegin(Node** head, int value) {
// 创建新节点
Node* newNode = new Node();
newNode->data = value;
newNode->next = *head;
// 更新头节点指针
*head = newNode;
}
void insertAfter(Node* current, int value) {
if (current != nullptr) {
// 创建新节点
Node* newNode = new Node();
newNode->data = value;
newNode->next = current->next;
// 将当前节点的next指向下新节点
current->next = newNode;
} else {
std::cout << "Current node is null." << std::endl;
}
}
```
**3. 删除(Deletion):**
```cpp
// 删除头部节点
void deleteFromBegin(Node** head) {
if (*head != nullptr) {
Node* temp = *head;
*head = (*head)->next;
delete temp;
} else {
std::cout << "List is empty." << std::endl;
}
}
// 删除特定值的节点
void deleteNode(Node** head, int value) {
Node* current = *head;
Node* prev = nullptr;
while (current != nullptr && current->data != value) {
prev = current;
current = current->next;
}
if (current != nullptr) {
if (prev == nullptr) { // 如果是要删除头结点
*head = current->next;
} else {
prev->next = current->next;
}
delete current;
} else {
std::cout << "Value not found in the list." << std::endl;
}
}
```