链栈
#include <iostream>
#include<cstring>
#include <cstdlib>
using namespace std;
typedef struct selemtype{
selemtype *next;
int data;
}selemtype;
selemtype *initstack()
{
selemtype *top;
top = (selemtype *)malloc(sizeof(selemtype));
top->next=NULL;
return top;
}
selemtype *push(selemtype *top)
{
int e;
selemtype *p;
while(1){
p = (selemtype *)malloc(sizeof(selemtype));
cin >> e;
if(e!=1001)
{
top->data = e;
p->next = top;
top = p;}
else
break;
}
return top;
}
int gettop(selemtype *s)
{
s=s->next;
while(s!=NULL)
{
cout << s->data << " ";
s = s->next;
}
cout << endl;
return 0;
}
selemtype *pop(selemtype *s, selemtype *top)
{
if (s != top)
top = top->next;
else cout<<"该栈为空栈"<<endl;
return top;
}
int main()
{
selemtype *base,*top,*s;
top = initstack();
cout << "首先进行入栈操作:"<<endl;
base = top;
s=push(top);
s=pop(base, s);
cout << "若该栈不为空,弹出栈顶元素:" << endl;
cout<<s->data<<endl;
cout << "若该栈不为空,删除栈顶元素后弹栈:" << endl;
gettop(s);
system("pause");
return 0;
}