#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int DataType;
struct stack
{
int max;
int top;
DataType *elem;
};
typedef struct stack *SeqStack;
SeqStack SetNullStack_seq(int m)
{
SeqStack sstack=(SeqStack)malloc(sizeof(struct stack));
if(sstack->elem!=NULL)
{
sstack->elem=(int*)malloc(sizeof(int)*m);
if(sstack->elem!=NULL)
{
sstack->max=m;
sstack->top=-1;
return(sstack);
}
else
{
free(sstack);
return NULL;
}
}
else
{
printf("alloc failure");
return NULL;
}
}
int IsNullStack_seq(SeqStack sstack)
{
return(sstack->top==-1);
}
void Push_seq(SeqStack sstack,int x)
{
if(sstack->top>=sstack->max-1)
printf("overflow!\n");
else
{
sstack->top++;
sstack->elem[sstack->top]=x;
}
}
void Pop_seq(SeqStack sstack)
{
if(IsNullStack_seq(sstack))
printf("underflow!\n");
else
sstack->top=sstack->top-1;
}
DataType Top_seq(SeqStack sstack)
{
if(IsNullStack_seq(sstack))
printf("empty!\n");
else
return sstack->elem[sstack->top];
}
void printstack(SeqStack sstack)
{
if (IsNullStack_seq(sstack))
printf("\n The stack is NULL ! \n");
else
{
for (int i = 0;i <=sstack->top;i++)
printf("%d ",sstack->elem[i]);
}
printf("\n");
}
int main()
{
int m=10;
SeqStack stack1=SetNullStack_seq(m);
Push_seq(stack1,5);
Push_seq(stack1,8);
Push_seq(stack1,9);
printstack(stack1);
Pop_seq(stack1);
printstack(stack1);
printf("栈顶元素:%d\n",Top_seq(stack1));
system("pause");
}