#include<iostream>
using namespace std;
/*
API:
(1)push
(2)pop
(3)isEmpty
(4)Length
*/
////////////////////////////////////////////////////////////////////////
/*
顺序结构实现栈
*/
/*
顺序实现的栈的结构
*/
#define MAXSIZE 1000
template <class T>
class Stack_array{
private:
T data[MAXSIZE];
int top;
public:
Stack_array(){
top = -1;
}
//是否为空
bool isEmpty(){
if (top == -1)
return true;
return false;
}
//插入一个数据
bool push(T item){
if (top > MAXSIZE - 1)
{
cout << "Overflow the size of the stack" << endl;
return false;
}
++top;
data[top] = item;
return true;
}
//删除一个元素
bool pop(T & item){
if (top == -1){
cout << "The stack is Empty" << endl;
return false;
}
item=data[top];
--top;
return true;
}
//得打栈的长度
int Length(){
return top + 1;
}
void print(){
for (int i = 0; i <= top; i++)
{
cout << data[i] << " ";
}
cout << endl;
}
friend ostream &operator <<(ostream &, const Stack_array<T>);
};
template <class T>
ostream & operator <<(ostream & out, const Stack_array<T> & a){
for (int i = 0; i <= a.top; i++)
{
out << a.data[i] << " ";
}
out << endl;
return out;
}
void main(){
Stack_array<int> s;
s.push(1);
s.push(2);
int item = 0;
s.pop(item);
cout << item << endl;
cout << s << endl;
s.print();
system("pause");
}