#include <iostream>
using namespace std;
class Node
{
int date;//节点数据
Node *pNext;//指向下一个节点的指针
friend class Stack;//友元类
};
class Stack
{
public:
Stack()//构造器
{
pTop = new Node;
pBottom = pTop;
pBottom->pNext = NULL;
}
~Stack()//析构器
{
delete pTop;
}
void push(int val)//压栈
{
Node *pNew = new Node;
pNew->date=val;
pNew->pNext=pTop;
pTop = pNew;
}
void traverse()//遍历
{
Node *p=pTop;
while(p!=pBottom)
{
cout<<p->date<<endl;
p=p->pNext;
}
}
bool isempty()//判空
{
if(pTop==pBottom)
{
return true;
}else
{
return false;
}
}
bool pop(int *val)//出栈
{
if(isempty())
{
return false;
}else
{
Node *p=pTop;
*val = p->date;
pTop = p->pNext;
delete p;
p=NULL;
return true;
}
}
void clear()//清空栈数据
{
Node *p=pTop;
Node *q=NULL;
while(p!=pBottom)
{
q=p->pNext;
delete p;
p = q;
}
pTop=pBottom;
}
private:
Node *pTop;//栈顶
Node *pBottom;//栈底
};
int main(void)
{
Stack s;
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.traverse();
s.clear();
s.traverse();
return 0;
}