栈遵循先进后出,后进先出的原则,它的插入和删除都是在栈顶进行操作,是一种特殊的线性顺序表,因此,实现栈我们通常建立在顺序表的基础上。下来我们利用之前实现过的容器Vector中的一部分接口来实现stack
(在这里分别用了模板参数和模板的模板参数两种方式来实现来实现)
stack.h:
#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include "Vector.h"
//模板参数
template<class T,class Container>
class Stack1
{
public:
Stack1()//构造函数
{}
void Push(const T data)
{
_con.PushBack(data);
}
void Pop()
{
_con.PopBack();
}
bool Empty()
{
return _con.Empty();
}
size_t Size()
{
return _con.Size();
}
T& Top()
{
return _con.Back();
}
const T& Top()const
{
return _con.Back();
}
private:
Container _con;
};
//模板的模板参数
template<class