#include <iostream>
#include <assert.h>
using namespace std;
struct LinkNode
{
int data;
struct LinkNode *link;
LinkNode(const int &item,LinkNode *ptr=NULL){data=item;link=ptr;}
};
class LinkedStack
{
public:
LinkedStack():top(NULL){}
~LinkedStack(){makeEmpty();}
void Push();
void Pop();
void getTop();
int IsEmpty() const {return (top==NULL)?1:0;}
int getsize();
void makeEmpty();
void print();
private:
LinkNode *top;
};
int main()
{
LinkedStack l;
int x;
while(1)
{
cout<<"1初始化 2建栈 3退栈 4获取栈大小 5打印栈"<<endl;
cin>>x;
if(x==0) break;
switch(x)
{
case 1:l.makeEmpty();break;
case 2:l.Push();break;
case 3:l.Pop();break;
case 4:l.getsize();break;
case 5:l.print();break;
default:break;
}
}
}
void LinkedStack::makeEmpty()
{
LinkNode *p;
while(top!=NULL)
{
p=top;top=top->link;delete p;
}
}
void LinkedStack::Push()
{
cout<<"输入值:";
int n;cin>>n;
top=new LinkNode(n,top);
}
void LinkedStack::print()
{
LinkNode *p;
p=top;
while(p!=NULL)
{
cout<<p->data<<ends;
p=p->link;
}
cout<<endl;
}
void LinkedStack::Pop()
{
if(IsEmpty()==1) return;
LinkNode *p=top;
top=top->link;
delete p;
}
int LinkedStack::getsize()
{
LinkNode *p=top;
int k=0;
while(p!=NULL)
{
p=p->link;
k++;
}
cout<<k<<endl;
}
#include <assert.h>
using namespace std;
struct LinkNode
{
int data;
struct LinkNode *link;
LinkNode(const int &item,LinkNode *ptr=NULL){data=item;link=ptr;}
};
class LinkedStack
{
public:
LinkedStack():top(NULL){}
~LinkedStack(){makeEmpty();}
void Push();
void Pop();
void getTop();
int IsEmpty() const {return (top==NULL)?1:0;}
int getsize();
void makeEmpty();
void print();
private:
LinkNode *top;
};
int main()
{
LinkedStack l;
int x;
while(1)
{
cout<<"1初始化 2建栈 3退栈 4获取栈大小 5打印栈"<<endl;
cin>>x;
if(x==0) break;
switch(x)
{
case 1:l.makeEmpty();break;
case 2:l.Push();break;
case 3:l.Pop();break;
case 4:l.getsize();break;
case 5:l.print();break;
default:break;
}
}
}
void LinkedStack::makeEmpty()
{
LinkNode *p;
while(top!=NULL)
{
p=top;top=top->link;delete p;
}
}
void LinkedStack::Push()
{
cout<<"输入值:";
int n;cin>>n;
top=new LinkNode(n,top);
}
void LinkedStack::print()
{
LinkNode *p;
p=top;
while(p!=NULL)
{
cout<<p->data<<ends;
p=p->link;
}
cout<<endl;
}
void LinkedStack::Pop()
{
if(IsEmpty()==1) return;
LinkNode *p=top;
top=top->link;
delete p;
}
int LinkedStack::getsize()
{
LinkNode *p=top;
int k=0;
while(p!=NULL)
{
p=p->link;
k++;
}
cout<<k<<endl;
}