📜  C++数据结构(1)

📅  最后修改于: 2023-12-03 15:29:55.270000             🧑  作者: Mango

C++数据结构

简介

数据结构是计算机存储、组织数据的方式,是构建算法的基础。C++作为一种流行的编程语言,具有强大的数据结构支持。C++的标准库和其他第三方库提供了许多现成的数据结构实现,如STL容器和Boost库。

常见数据结构
数组

数组是一种数据结构,用于存储按顺序排列的多个元素。C++提供了内置的数组类型,也支持动态数组的实现(使用指针和new/delete操作符)。

以下是一个C++数组的示例:

int arr[5] = {1, 2, 3, 4, 5};
链表

链表是一种动态数据结构,由多个不同的节点组成。每个节点由数据和指向下一个节点的指针组成。C++可以使用结构体或类实现链表。

以下是一个基于结构体的链表的示例:

struct Node
{
    int data;
    Node* next;
};

栈是一种特殊的数据结构,称为LIFO(后进先出)结构。C++提供了一个标准的栈容器类,std::stack,也可以使用链表实现自定义栈。

以下是一个基于链表的栈实现的示例:

class Stack
{
private:
    Node* top;

public:
    Stack() : top(nullptr) {}  // 构造函数
    void push(int data);       // 压入数据
    void pop();                // 弹出数据
    int peek() const;          // 返回栈顶的数据
    bool isEmpty() const;      // 检查栈是否为空
};
队列

队列是一种常见的数据结构,称为FIFO(先进先出)结构。C++提供了一个标准的队列容器类,std::queue,也可以使用链表实现自定义队列。

以下是一个基于链表的队列实现的示例:

class Queue
{
private:
    Node* first;
    Node* last;

public:
    Queue() : first(nullptr), last(nullptr) {}  // 构造函数
    void enqueue(int data);                      // 入队数据
    void dequeue();                              // 出队数据
    int peek() const;                            // 返回队首的数据
    bool isEmpty() const;                        // 检查队列是否为空
};
哈希表

哈希表是一种数据结构,用于高效地插入、查找和删除数据。C++提供了一个标准的哈希表容器类,std::unordered_map,也可以手动实现哈希表。

以下是一个基于C++标准库实现的哈希表的示例:

#include <unordered_map>

int main()
{
    std::unordered_map<std::string, int> myMap;
    myMap["apple"] = 2;
    myMap["orange"] = 3;
    myMap["banana"] = 1;

    // 查找元素
    std::cout << "orange: " << myMap["orange"] << std::endl;

    // 遍历元素
    for (auto const& pair : myMap)
    {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}
总结

C++具有强大的数据结构支持,在编写算法时很有用。此外,C++标准库和其他第三方库提供了许多现成的数据结构实现,可以极大地简化代码编写。对于需要高效处理大量数据的应用程序,选择正确的数据结构是至关重要的。