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;
}