目录
1.题目描述
将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空;当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长(见图)。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。
2.算法实现
#include<bits/stdc++.h>
#define MAXSIZE 100
using namespace std;
typedef struct
{
int top[2],bot[2]; //栈顶和栈底指针
int *V; //栈数组
int m; //栈最大可容纳元素个数
} DblStack;
int InitDblStack(DblStack &S)
{
S.V=new int [S.m];
S.m=MAXSIZE;
S.top[0]=-1;
S.top[1]=S.m;
return 1;
}
int isEmpty(DblStack &S)
{
if(S.top[0]==-1&&S.top[1]==S.m)
return 1;
else return 0;
}
int isFull