单链表的基本操作算法c++
时间: 2023-08-19 16:06:15 浏览: 107
单链表是一种常见的数据结构,它由节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
以下是单链表的基本操作算法示例(使用C++语言):
```cpp
#include <iostream>
// 定义单链表节点的结构
struct ListNode {
int data;
ListNode* next;
ListNode(int val) : data(val), next(nullptr) {}
};
// 向链表末尾插入一个节点
void insert(ListNode*& head, int val) {
ListNode* newNode = new ListNode(val);
if (head == nullptr) {
head = newNode;
} else {
ListNode* curr = head;
while (curr->next != nullptr) {
curr = curr->next;
}
curr->next = newNode;
}
}
// 删除链表中指定值的节点
void remove(ListNode*& head, int val) {
ListNode dummy(0);
dummy.next = head;
ListNode* prev = &dummy;
ListNode* curr = head;
while (curr != nullptr) {
if (curr->data == val) {
prev->next = curr->next;
delete curr;
curr = prev->next;
} else {
prev = curr;
curr = curr->next;
}
}
head = dummy.next;
}
// 遍历打印链表中的所有节点值
void printList(ListNode* head) {
ListNode* curr = head;
while (curr != nullptr) {
std::cout << curr->data << " ";
curr = curr->next;
}
std::cout << std::endl;
}
int main() {
ListNode* head = nullptr;
// 插入节点
insert(head, 1);
insert(head, 2);
insert(head, 3);
insert(head, 4);
// 打印链表
std::cout << "链表内容:";
printList(head);
// 删除节点
remove(head, 2);
// 再次打印链表
std::cout << "删除节点后的链表内容:";
printList(head);
return 0;
}
```
这段代码演示了如何创建一个单链表,向链表末尾插入节点,删除链表中的指定节点,并遍历打印链表的所有节点值。你可以根据需要进行修改和扩展。
阅读全文