用C++写单链表,包括遍历,元素定位,修改指定元素的值,删除指定元素,在任意位置插入元素
时间: 2024-09-29 21:08:51 浏览: 39
在C++中,创建、操作单链表的基本步骤包括节点定义、链表初始化、遍历、查找/修改元素值以及插入/删除元素。这里我会展示一些关键部分的代码。
首先,定义一个简单的链表节点结构:
```cpp
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
```
### 1. 遍历链表
```cpp
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->val << " ";
temp = temp->next;
}
std::cout << "\n";
}
```
### 2. 查找元素并修改值
```cpp
bool findAndReplace(ListNode*& head, int target, int newVal) {
ListNode* temp = head;
while (temp != nullptr && temp->val != target) {
temp = temp->next;
}
if (temp != nullptr) {
temp->val = newVal;
return true; // 成功找到并修改了
} else {
return false; // 未找到目标元素
}
}
```
### 3. 删除指定元素
```cpp
ListNode* removeElement(ListNode* &head, int target) {
if (head == nullptr || head->val == target) {
ListNode* temp = head;
head = head->next;
delete temp;
return head;
}
ListNode* prev = head;
ListNode* curr = head->next;
while (curr != nullptr && curr->val != target) {
prev = curr;
curr = curr->next;
}
if (curr != nullptr) {
prev->next = curr->next;
delete curr;
}
return head;
}
```
### 4. 在任意位置插入元素
```cpp
ListNode* insertElement(ListNode* &head, int pos, int value) {
if (pos <= 0) return head;
ListNode* newNode = new ListNode(value);
ListNode* temp = head;
for (int i = 0; i < pos - 1 && temp != nullptr; ++i) {
temp = temp->next;
}
if (temp == nullptr) {
newNode->next = head;
head = newNode;
} else {
newNode->next = temp->next;
temp->next = newNode;
}
return head;
}
```
以上代码只处理了最基础的操作,实际应用中还需要考虑边界条件和内存管理等细节。
阅读全文
相关推荐

















