#include <vector>
#include <iostream>
class UnderflowException { };
using namespace std;
template<typename Object>
class stack
{
public:
stack(int capacity=100)
:array(capacity),top(-1)
{ }
stack(vector<Object> &vec)
:capacity(100),top(vec.size()-1)
{
for(int i=0;i<vec.size();++i)
array.push_back(vec[i]);
}
bool isEmpty() const
{
return -1==top;
}
void push(Object x)
{
array[++top]=x;
}
Object pop()
{
if(isEmpty())
throw UnderflowException{ };
else
{
Object old=array[top--];
return old;
}
}
int size()
{
return top+1;
}
private:
vector<Object> array;
int capacity;
int top;
};
int main()
{
vector<int> vec{1,2,3,4,5};
stack<int> mystack{vec};
mystack.push(6);
mystack.push(10);
while(mystack.size())
cout<<mystack.pop()<<" ";
cout<<endl;
}
算法导论—栈和队列
最新推荐文章于 2017-11-05 21:38:09 发布