📅  最后修改于: 2023-12-03 14:39:54.672000             🧑  作者: Mango
在C++中,未排序链表是一种数据结构,可以用来存储和操作一组元素。未排序链表是由一组节点构成,每个节点包含一个元素和指向下一个节点的指针。与数组相比,链表具有动态添加和删除元素的优势。
struct Node {
int val;
Node* next;
Node(int x) : val(x), next(NULL) {}
};
class LinkedList {
public:
LinkedList() {
head = NULL;
}
void add(int val) {
Node* newNode = new Node(val);
newNode->next = head;
head = newNode;
}
void remove(int val) {
if (head == NULL) {
return;
}
if (head->val == val) {
Node* temp = head;
head = head->next;
delete temp;
return;
}
Node* current = head;
while(current->next != NULL) {
if (current->next->val == val) {
Node* temp = current->next;
current->next = temp->next;
delete temp;
return;
}
current = current->next;
}
}
bool contains(int val) {
Node* current = head;
while(current != NULL) {
if (current->val == val) {
return true;
}
current = current->next;
}
return false;
}
private:
Node* head;
};
在上面的代码中,我们通过结构体Node
来定义链表节点,每个节点都包含一个值和一个指向下一个节点的指针。类LinkedList
包含一个指向头节点的指针,以及add
, remove
, contains
三种操作函数,可以对链表进行添加,删除和查找操作。
#include <iostream>
int main() {
LinkedList list;
list.add(1);
list.add(2);
list.add(3);
std::cout << "Contains 2: " << list.contains(2) << std::endl;
std::cout << "Contains 4: " << list.contains(4) << std::endl;
list.remove(2);
std::cout << "Contains 2: " << list.contains(2) << std::endl;
return 0;
}
上面的代码演示了如何创建一个未排序链表,添加一些元素并查找它们。还可以使用remove
函数从链表中删除一个元素,方法与查找元素类似。
C++中的未排序链表是实现动态数据结构的一种强大工具,可以用来实现许多类型的算法。它允许我们在使用时添加,删除和查找元素。在实现和使用未排序链表时,还需要考虑内存泄漏等问题。