📜  c++ 中的未排序链表 (1)

📅  最后修改于: 2023-12-03 14:39:54.672000             🧑  作者: Mango

C++中的未排序链表

在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++中的未排序链表是实现动态数据结构的一种强大工具,可以用来实现许多类型的算法。它允许我们在使用时添加,删除和查找元素。在实现和使用未排序链表时,还需要考虑内存泄漏等问题。