#include <iostream>
using namespace std;
typedef struct Stacknode
{
int data;
struct Stacknode *next;
}Stacknode ,*LinkStackPtr;
typedef struct LinkStack
{
LinkStackPtr top;
int count;
}LinkStack;
void InitStack(LinkStack *stack);
void PushStack(LinkStack *stack,int data);
void Pop(LinkStack *stack);
void PrintStack(LinkStack stack);
int StackEmpty(LinkStackPtr stack);
int main()
{
LinkStack stack;
InitStack(&stack);
PushStack(&stack,10);
PushStack(&stack,20);
PushStack(&stack,30);
PushStack(&stack,40);
PrintStack(stack);
Pop(&stack);
PrintStack(stack);
Pop(&stack);
PrintStack(stack);
system("pause");
return 0;
}
void PushStack(LinkStack *stack,int data)
{
LinkStackPtr s = (LinkStackPtr )malloc(sizeof(Stacknode));
s->data =data;
s->next = stack->top;
stack->top = s;
stack->count++;
}
void InitStack(LinkStack *stack)
{
stack->top=NULL;
stack->count=0;
}
void Pop(LinkStack *stack)
{
if(StackEmpty(stack->top)==0)
{
cout<<"栈为空"<<endl;
return;
}
LinkStackPtr p =stack->top;
stack->top = p->next;
free(p);
stack->count--;
}
void PrintStack(LinkStack stack)
{
LinkStackPtr p = stack.top;
for(p=stack.top;p;p=p->next)
{
cout<<p->data<<endl;
}
cout<<"栈中的元素为"<<stack.count<<endl;
}
int StackEmpty(LinkStackPtr stack)
{
if(stack==NULL)
return 0;
return 1;
}