通过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来实现栈和队列的主要内容,如果未能解决你的问题,请参考以下文章

栈和队列 数据结构

python 栈和队列(使用list实现)

4.0栈和队列

Python实现栈和队列

实现特殊的栈和队列

C++初阶Stack & Queue