C/C++总述:Study C/C++-CSDN博客
栈与队列详解(数据结构):栈与队列_禊月初三-CSDN博客
stack(栈)
stack的常用函数
函数说明 | 功能说明 |
---|---|
stack() | 构造空栈 |
push(T& val) | 将元素val压入栈中 |
size() | 返回栈中元素个数 |
empty() | 检测栈是否是空,如果是空返回true |
top() | 返回栈顶元素的引用 |
pop() | 将栈顶元素弹出栈 |
stack的模拟实现
#include<iostream>
#include<vector>
using namespace std;
template<typename T,typename act = vector<T>>
class Stack {
private:
//如果没有显示给出act的类型
// act == vector<T>
//创建act类型的变量arr
//如果act是类类型,那么arr是对象
act arr;
public:
//无参构造
Stack() {}
//元素入栈
void Push(const T& value = T()) {
arr.push_back(value);
}
//元素出栈
void Pop() {
arr.pop_back();
}
//返回栈中元素个数
size_t Size()const {
return arr.size();
}
//判断栈是否是空
bool Empty() const {
return arr.empty();
}
//普通栈 返回栈顶元素
T& Top() {
return arr.back();
}
//const栈 返回栈顶元素
const T& Top()const {
return arr.back();
}
};
int main() {
Stack<int> s;
s.Push(1);
s.Push(2);
cout << s.Top() << endl;
cout << s.Size() << endl;
s.Pop();
cout << s.Empty() << endl;
}
queue(队列)
queue的常用函数
函数说明 | 功能说明 |
---|---|
queue() | 构造空的队列 |
push(T& val) | 将元素val压入队中 |
size() | 返回队列中有效元素的个数 |
empty() | 检查队列是否是空,如果是空返回true |
front() | 返回队头元素的引用 |
back() | 返回队尾元素的引用 |
pop() | 将队头元素出队列 |
queue的模拟实现
#include<iostream>
#include<vector>
using namespace std;
template<typename T,typename act = vector<T>>
class Queue {
private:
act arr;
public:
//无参构造
Queue() {}
//元素入队列
void Push(const T& value = T()) {
arr.push_back(value);
}
//队头元素出队列
void Pop() {
arr.erase(arr.begin());
}
//返回队列元素个数
size_t Size() const {
return arr.size();
}
//判断队列是否为空
bool Empty() {
return arr.empty();
}
//普通对象 返回队头元素的引用
T& Front() {
return arr.front();
}
//const对象 返回队头元素的引用
const T& Front() const{
return arr.front();
}
//普通对象 返回队尾元素的引用
T& Back() {
return arr.back();
}
//const对象 返回队尾元素的引用
const T& Back() const{
return arr.back();
}
};
int main() {
Queue<int> q;
q.Push(1);
q.Push(2);
cout << q.Size() << endl;
cout << q.Front() << endl;
cout << q.Back() << endl;
q.Pop();
cout << q.Empty() << endl;
}