C++学习,链表

时间:2024-10-31 14:20:23

C++ 中,链表是一种常见的数据结构。链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

链表的主要优点包括:
动态大小:可以根据需要添加或删除节点,不受固定大小的限制。
高效的插入和删除操作:在特定位置插入或删除节点的时间复杂度通常为 O (1),前提是知道要操作的位置的指针。


链表缺点:
随机访问困难:不像数组可以通过索引直接访问元素,链表需要从头节点开始遍历才能访问特定的节点。
额外的内存开销:每个节点都需要额外的指针空间来存储指向下一个节点的引用。

示例:

#include <iostream>

struct ListNode {
    int data;
    ListNode* next;
    ListNode(int val) : data(val), next(nullptr) {}
};

class LinkedList {
public:
    LinkedList() : head(nullptr) {}

    void insert(int val) {
        ListNode* newNode = new ListNode(val);
        if (!head) {
            head = newNode;
        } else {
            ListNode* temp = head;
            while (temp->next) {
                temp = temp->next;
            }
            temp->next = newNode;
        }
    }

    void display() {
        ListNode* temp = head;
        while (temp) {
            std::cout << temp->data << " ";
            temp = temp->next;
        }
        std::cout << std::endl;
    }

private:
    ListNode* head;
};

int main() {
    LinkedList myList;
    myList.insert(1);
    myList.insert(2);
    myList.insert(3);
    myList.display();
    return 0;
}