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

实现的过程比较简单,主要是区分如何固定栈顶和如何规定队列前后即可.

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值