在 C++ 中,vector
是一種動態數組,它可以很方便地實現常見的數據結構,如隊列、棧和鏈表。以下是使用 vector
實現這些數據結構的示例:
使用 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;
};
使用 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;
};
使用 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
實現隊列、棧和鏈表。注意,這些實現僅用于演示目的,實際應用中可能需要根據具體需求進行優化和調整。