鉴于某些高校的夏令营不让用stl,因此到时候肯定是组要自己手搓。
特写下一个模板,通用性一般。
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std ;
class node{
public :int index ;
node(){
index = 0 ;
}
};
class Stack{
node *elements ;
int top ;
int SIZE ;
public : Stack(int num)
{
elements = (node*)malloc(sizeof(node)*(num));
top = -1 ;
SIZE = num ;
}
~Stack()
{
delete [] elements;
elements = NULL ;
}
bool push(node a)
{
if(top>=SIZE-1)
{
elements = (node*)malloc(sizeof(node)*(SIZE+1000));
SIZE +=1000 ;
cout << "扩充了空间"<<SIZE<<endl;
}
elements[++top] = a ;
return true ;
}
node pop()
{
if(top ==-1)
{
cout << "empty"<<endl;
return node();
}else {
return elements[top--];
}
}
node Top()
{
return elements[top];
}
};
int main(){
Stack sk(0);
node a ;
a.index = 5 ;
cout << sk.push(a)<<endl;
cout << sk.Top().index<<endl;
node b =sk.pop();
cout << b.index <<endl;
cout << sk.pop().index<<endl;
}