实现了主要函数
编译环境 visual stdio2005
#include<iostream>
#include<assert.h>
using namespace std;
template <class T>
class stack;
template <class T>
class node
{
friend class stack<T>;
private:
T data;
node<T> *link;
public:
node(T d=0,node<T> *l=NULL):data(d),link(l){}
};
template<class T>
class stack
{
private:
node<T> *top;
public:
stack(T d){top=new node<T>(d);}
void push(const T& x)
{
top=new node<T>(x,top);
}
T *pop()
{
assert(!IsEmpty ( ));
node<T>*p;T *q;
p=top;q=&p->data;
top=top->link;
delete p;
return q;
}
T GetTop ( )const
{
assert(!IsEmpty ( ));
return top->data;
}
int IsEmpty ( ) const
{
return top==NULL;
}
void makeempty()
{node<T> *p;
while(top!=NULL)
{ p=top;
top=top->link;
delete p;
}
}
~stack()
{
while(top!=NULL)
{ node<T> *p=top;
top=top->link;
delete p;
}
}
};
void main()
{
stack<float> s(2);
s.push(3);
cout<<s.GetTop();
s.pop();
cout<<s.GetTop();
cout<<s.IsEmpty();
s.makeempty();
cout<<s.IsEmpty();
}