链表节点定义
#include <iostream>
struct Node {
int data;
Node* next;
Node(int value) : data(value), next(nullptr) {}
};
链表类定义
class LinkedList {
private:
Node* head;
public:
LinkedList() : head(nullptr) {}
~LinkedList() {
while (head) {
Node* temp = head;
head = head->next;
delete temp;
}
}
增:这段代码实现了在链表末尾插入新节点的功能。它首先创建一个新的节点,并检查链表是否为空。如果链表为空,它将新节点设置为头节点。
如果链表不为空,它遍历链表到最后一个节点,然后将新节点添加到末尾。这样,新节点就会被正确地插入到链表的末尾。
// 增:在链表末尾插入元素
void append(int value) {
Node* newNode = new Node(value);
if (!head) {
head = newNode;
return;
}
Node* temp = head;
while (temp->next) {
temp = temp->next;
}
temp->next = newNode;
}
// 删:删除第一个匹配的值
void remove(int value) {
Node* temp = head;
Node* prev = nullptr;
if (temp != nullptr && temp->data == value) {
head = temp->next;
delete temp;
return;
}
while (temp != nullptr && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == nullptr) return;
prev->next = temp->next;
delete temp;
}
// 改:修改第一个匹配的值
void update(int oldValue, int newValue) {
Node* temp = head;
while (temp != nullptr) {
if (temp->data == oldValue) {
temp->data = newValue;
return;
}
temp = temp->next;
}
}
// 查:查找并返回第一个匹配的值
bool search(int value) {
Node* temp = head;
while (temp != nullptr) {
if (temp->data == value) {
return true;
}
temp = temp->next;
}
return false;
}
// 打印链表
void print() {
Node* temp = head;
while (temp) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "nullptr" << std::endl;
}
};