顺序栈的结构体很简单,一个保存数据的数组和一个记录栈顶的整型值。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct
{
datatype data[MAXSIZE];
int top;//栈顶
}SeqStack;
SeqStack* Init_SeqStack();
int Empty_SeqStack(SeqStack* s);
int Push_SeqStack(SeqStack* s,datatype x);
int Pop_SeqStack(SeqStack* s,datatype *x);
SeqStack* Init_SeqStack()
{
SeqStack *s;
s = (SeqStack*)malloc(sizeof(SeqStack));
s->top = -1;
return s;
}
int Empty_SeqStack(SeqStack* s)
{
if(s->top == -1)
return 1;
else
return 0;
}
int Push_SeqStack(SeqStack* s,datatype x)
{
if(s->top == MAXSIZE - 1)
return 0;
else
{
s->top++;
s->data[s->top] = x;
return 1;
}
}
int Pop_SeqStack(SeqStack* s,datatype *x)
{
if(Empty_SeqStack(s) == 1)
return 0;
else
{
*x = s->data[s->top];
s->top--;
return 1;
}
}
void main()
{
int data = 0;
SeqStack* s = Init_SeqStack();
printf("入栈\n");
scanf("%d",&data);
while(data != -1)
{
Push_SeqStack(s,data);
scanf("%d",&data);
}
printf("出栈\n");
while(Pop_SeqStack(s,&data))
{
printf("%d ",data);
}
}