#include <iostream>
using namespace std;
class Stack
{
public: struct Link
{
Link(struct Link* next,int data):next_(next),data_(data)
{
}
Link*next_;
int data_;
};
Stack(struct Link*head,int size ): head_(head),size_(size)
{
}
~Stack()
{
while(head_!=0)
{
struct Link *tmp_;
tmp_=head_;
head_=head_->next_;
delete(tmp_);
}
}
bool empty()
{
return (size_==0);
}
void Push( int data )
{
Link *node=new Link(head_,data);
//node->next_=head_;
head_=node;
size_++;
}
bool Pop( int &data)
{
if (!empty())
{
Link * tep;
tep=head_;
head_=head_->next_;
data=tep->data_;
//return data;
delete(tep);
size_--;
}
return false;
}
private:
Link *head_;
int size_;
};
int main()
{
Stack stack(0,0);
int i;
for (i=0;i<5;i++)
{
stack.Push(i);
}
while (!stack.empty())
{
stack.Pop(i);
cout<<"i="<<i<<endl;
}
return 0;
}
实现的结果同博客中用c实现栈。值得注意的是在C++中,NULL等价于0,在C中0是(void*)0