通过List和Vector来实现栈和队列
Posted 小羊教你来编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过List和Vector来实现栈和队列相关的知识,希望对你有一定的参考价值。
目录:
一.实现栈(stack)
1.Vector实现栈
实现还是比较简单的,我们直接通过调用对应的迭代器来进行操作就可以了.
class Stack1{
public:
void push(const T& val){
_st.push_back(val); //直接调用vector的尾插操作
}
void pop(){
_st.pop_back(); //尾删
}
T& top(){
return _st.size(); //将队尾当做栈顶来进行取数据
}
size_t size() const
{
return _st.size(); //直接看vector中的size
}
bool empty() const
{
return _st.empty(); //直接调用vector中的判空操作
}
private:
vector<T> _st; //初始化对应的T类型的容器
};
2.List实现栈
#include<list>
template <class T>
class Stack2{
public:
void push(const T& val){
_st.push_front(val); //list头插实现
//_st.push_back(val);
}
void pop(){
_st.pop_front(); //list头删
//_st.pop_back();
}
T& top(){
return _st.front(); //返回list头位置的数据
//return _st.back();
}
bool empty() const{
return _st.empty(); //直接调用对应的判空操作
}
size_t size() const{
return _st.size(); //直接调用对应的size
}
private:
list<T> _st;
};
二.实现队列(queue)
1.List实现队列
template <class T>
class Queue{
public:
void push(const T& val){
_q.pop_back(val); //从list尾部插入数据
//_q.pop_front(val);
}
void pop(){
_q.pop_front(); //从头部删除数据
//_q.pop_back();
}
T& front(){
return _q.front(); //获取头部的对应数据
//return _q.back();
}
size_t size() const{
return _q.size(); //调用list的size
}
bool empty() const{
return _q.empty(); //调用list的判空操作
}
private:
list<T> _q;
};
实现的过程比较简单,主要是区分如何固定栈顶和如何规定队列前后即可.
以上是关于通过List和Vector来实现栈和队列的主要内容,如果未能解决你的问题,请参考以下文章