C/C++教程

【C++基础知识】stack的模拟实现

本文主要是介绍【C++基础知识】stack的模拟实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

方法一:用vector模拟实现stack

#include<iostream>
#include<list>
#include<vector>
using namespace std;

template <class T>
class Stack {
public:
	void push(const T&val)
	{
		st_.push_back(val);
	}

	void pop()
	{
		st_.pop_back();
	}

	T& top()
	{
		return st_.back();
	}

	size_t size()
	{
		return st_.size();
	}

	bool empty()
	{
		return st_.empty();
	}


private:
	vector<T> st_;

};

void test()
{
	Stack<int>st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);

	st.push(0);
	st.pop();

	cout << "size:" << st.size() << endl;


	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;


	cout << "size:" << st.size() << endl;


}

int main()
{
	test();
	return 0;
}

在这里插入图片描述

方法二:用list模拟实现stack

#include<iostream>
#include<list>
#include<vector>
using namespace std;

template<class T>
class Stack2 {
public:
	void push(const T&val)
	{
		st_.push_back(val);
	}

	void pop()
	{
		st_.pop_back();
	}

	T& top()
	{
		return st_.back();
	}

	size_t size()
	{
		return st_.size();
	}

	bool empty()
	{
		return st_.empty();
	}


private:
	list<T>st_;
};



void test()
{
	Stack2<int>st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);

	st.push(0);
	st.pop();

	cout << "size:" << st.size() << endl;


	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;


	cout << "size:" << st.size() << endl;


}

int main()
{
	test();
	return 0;
}

在这里插入图片描述

这篇关于【C++基础知识】stack的模拟实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!