#include <iostream>
using namespace std;
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack &S)
{
S.base = new int[5];
S.top = S.base;
S.stacksize = 5;
return 1;
}
int pushS(sqstack &S, int a)
{
if (S.top - S.base == S.stacksize)
return 0;
*S.top = a;
S.top++;
return 1;
}
int popS(sqstack &S)
{
if (S.top == S.base)
return 0;
S.top--;
cout << *S.top;
return 1;
}
/*void main()
{
sqstack S;
initstack(S);
pushS(S, 2);
pushS(S, 5);
popS(S);
popS(S);
}*/
typedef struct SNode {
int data;
struct SNode* next;
}SNode,*LinkStack;
int initSL(LinkStack &LS)
{
LS= NULL;
return 1;
}
int pushLS(LinkStack &LS, int a)
{
SNode* p = new SNode;
p->data = a;
p->next = LS;
LS= p;
return 1;
}
int popLS(LinkStack &LS)
{
cout << LS->data;
SNode* p = LS;
LS = LS->next;
delete p;
return 1;
}
void main()
{
LinkStack SL;
initSL(SL);
pushLS(SL, 2);
pushLS(SL, 3);
pushLS(SL, 4);
popLS(SL);
popLS(SL);
popLS(SL);
}