#include <iostream>
#include <cstdlib>
using namespace std;
namespace Stack{
template<typename N>
class stack
{
typedef N* S;
private :
S sk;
int len;
int top;
public :
stack(){sk = new N[1000];len = 1000;top=-1;}
stack(int len):len(len){
sk = new N[len];
top=-1;
}
~stack()
{
if (sk)
delete sk;
}
void clear()
{
if (sk)
{
delete sk;
len = 0;
top=-1;
}
}
bool empty()
{
return top<0;
}
unsigned length()
{
return top+1;
}
void push(N e)
{
if (top<len){
top++;
sk[top] = e;
}
}
N gettop()
{
if (top>=0)
return sk[top];
else
{
cout << "empty stack !!!!" << endl;
exit(-1);
}
}
N pop()
{
if (top>=0)
{
top--;
//cout << top << endl;
return sk[top + 1];
}
else{
cout << "empty stack !!!!" << endl;
exit(-1);
}
}
void iterator(void(*visit)(N e))
{
for (int i=0;i<=top;i++)
{
visit(sk[i]);
}
}
};
}
struct node
{
int data;
node(int data):data(data){}
node(){}
void print_node()
{
cout << data << endl;
}
};
void visit(node e)
{
e.print_node();
}
int main()
{
Stack::stack<node> s(100);
s.push(node(1));
s.push(node(3));
s.push(node(5));
/*while(!s.empty())
{
s.pop().print_node();
}*/
s.iterator(visit);
return 0;
}
数据结构之栈
最新推荐文章于 2022-09-05 21:58:33 发布