亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

利用C++ vector如何實現數據結構

c++
小樊
82
2024-10-16 12:31:12
欄目: 編程語言

在 C++ 中,vector 是一種動態數組,它可以很方便地實現常見的數據結構,如隊列、棧和鏈表。以下是使用 vector 實現這些數據結構的示例:

隊列(Queue)

使用 vector 實現隊列,可以使用 push_back() 在隊尾添加元素,使用 front()pop_front() 獲取和移除隊首元素。為了模擬隊列的先進先出(FIFO)特性,可以使用 insert()erase() 函數在指定位置插入和刪除元素。

#include <iostream>
#include <vector>
#include <algorithm>

class Queue {
public:
    void enqueue(int value) {
        data.push_back(value);
    }

    int dequeue() {
        if (isEmpty()) {
            throw std::runtime_error("Queue is empty");
        }
        int frontValue = data.front();
        data.erase(data.begin());
        return frontValue;
    }

    bool isEmpty() const {
        return data.empty();
    }

private:
    std::vector<int> data;
};

棧(Stack)

使用 vector 實現棧,可以使用 push_back() 在棧頂添加元素,使用 back()pop_back() 獲取和移除棧頂元素。

#include <iostream>
#include <vector>
#include <algorithm>

class Stack {
public:
    void push(int value) {
        data.push_back(value);
    }

    int pop() {
        if (isEmpty()) {
            throw std::runtime_error("Stack is empty");
        }
        int topValue = data.back();
        data.pop_back();
        return topValue;
    }

    bool isEmpty() const {
        return data.empty();
    }

private:
    std::vector<int> data;
};

鏈表(Linked List)

使用 vector 實現鏈表,可以創建一個包含 pair<int, int>vector,其中第一個元素表示節點值,第二個元素表示指向下一個節點的索引。這樣可以方便地實現鏈表的插入、刪除和查找操作。

#include <iostream>
#include <vector>
#include <algorithm>

class LinkedList {
public:
    void insert(int value, int index) {
        if (index < 0 || index > data.size()) {
            throw std::runtime_error("Invalid index");
        }
        data.insert(data.begin() + index, std::make_pair(value, -1));
    }

    void remove(int index) {
        if (index < 0 || index >= data.size()) {
            throw std::runtime_error("Invalid index");
        }
        data[index].second = -1; // Mark as removed
    }

    int find(int value) const {
        for (const auto& node : data) {
            if (node.first == value) {
                return node.second;
            }
        }
        return -1; // Not found
    }

private:
    std::vector<std::pair<int, int>> data;
};

這些示例展示了如何使用 vector 實現隊列、棧和鏈表。注意,這些實現僅用于演示目的,實際應用中可能需要根據具體需求進行優化和調整。

0
胶南市| 孟州市| 汉阴县| 红原县| 阿坝| 太湖县| 卢湾区| 聂拉木县| 香格里拉县| 岳池县| 甘德县| 资源县| 辽阳县| 常熟市| 改则县| 榆中县| 高唐县| 凤凰县| 古丈县| 崇信县| 勐海县| 延川县| 甘洛县| 锡林郭勒盟| 怀远县| 兰考县| 乌拉特前旗| 乐平市| 鸡泽县| 新和县| 双辽市| 宝清县| 南投市| 莱芜市| 珲春市| 阳高县| 丰顺县| 安化县| 徐州市| 青田县| 都安|