目录
顺序栈声明部分:
#define MAX_SIZE 10
typedef struct
{
int data[MAX_SIZE];
int top; //栈顶指针(栈顶元素数组下标,空栈为-1)
} SqStack; // SqStack 顺序栈
SqStack CreateStack(); //创建顺序栈
int Push(SqStack *S, int elem); //进栈
int Pop(SqStack *S, int *temp); //出栈,并用temp带出
int GetTop(SqStack S, int *temp); //读取栈顶元素,并用temp带出
int StackIsEmpty(SqStack S); //判空:=1为空栈,=0为非空栈
每个函数的具体定义:
创建顺序栈:
SqStack CreateStack()
{
SqStack S;
S.top = -1;
return S;
}
进栈:
int Push(SqStack *S, int elem)
{
if (S->top == MAX_SIZE - 1)
{
printf("栈满,入栈失败\n");
return 0;
}
S->top++;
S->data[S->top] = elem;
return 1;
}
出栈(并用temp带出出栈元素的值):
int Pop(SqStack *S, int *temp)
{
if (S->top == -1)
{
printf("栈空,出栈失败\n");
return 0;
}
*temp = S->data[S->top];
S->top--;
return 1;
}
读取栈顶元素,并用temp带出:
int GetTop(SqStack S, int *temp)
{
if (S.top == -1)
{
printf("栈空,查询失败\n");
return 0;
}
*temp = S.data[S.top];
return 1;
}
判空(=1为空栈,=0为非空栈):
int StackIsEmpty(SqStack S)
{
return S.top == -1;
}
共享栈声明部分:
typedef struct
{
int data[MAX_SIZE];
int top1, top2; //1,2号栈顶指针,1号自底向上,2号自顶向下
} ShStack; //ShStack 共享栈
ShStack CreateShStack(); //创建共享栈
int ShPush(ShStack *S, int stack, int elem); //elem进stack号栈
int ShPop(ShStack *S, int stack, int *temp); //stack号栈出栈,并用