单链表的查找,增加,删除,修改相关代码
时间: 2023-11-23 11:06:51 浏览: 18
单链表是一种常见的数据结构,下面是单链表的查找、增加、删除和修改的相关代码(使用C++语言实现):
```c++
#include <iostream>
using namespace std;
//定义单链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
//在单链表中查找指定元素
bool search(ListNode* head, int target) {
ListNode* p = head;
while (p != NULL) {
if (p->val == target) {
return true;
}
p = p->next;
}
return false;
}
//在单链表的末尾添加元素
ListNode* addEnd(ListNode* head, int val) {
ListNode* new_node = new ListNode(val);
if (head == NULL) {
head = new_node;
} else {
ListNode* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = new_node;
}
return head;
}
//在单链表中删除指定元素
ListNode* deleteNode(ListNode* head, int val) {
if (head == NULL) {
return NULL;
}
if (head->val == val) {
ListNode* temp = head;
head = head->next;
delete temp;
return head;
}
ListNode* p = head;
while (p->next != NULL && p->next->val != val) {
p = p->next;
}
if (p->next != NULL) {
ListNode* temp = p->next;
p->next = temp->next;
delete temp;
}
return head;
}
//在单链表中修改指定元素
ListNode* updateNode(ListNode* head, int old_val, int new_val) {
ListNode* p = head;
while (p != NULL) {
if (p->val == old_val) {
p->val = new_val;
break;
}
p = p->next;
}
return head;
}
int main() {
//创建单链表
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
//测试查找操作
cout << search(head, 2) << endl; //输出1,即查找成功
cout << search(head, 4) << endl; //输出0,即查找失败
//测试添加操作
head = addEnd(head, 4);
ListNode* p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl; //输出:1 2 3 4
//测试删除操作
head = deleteNode(head, 2);
p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl; //输出:1 3 4
//测试修改操作
head = updateNode(head, 3, 5);
p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl; //输出:1 5 4
return 0;
}
```
以上代码实现了单链表的基本操作,可以根据需要进行调整和扩展。