双栈定义:
typedef struct
{
int top[2],bot[2];
int *v;
int length;
}DblStack;
初始化双栈:
#define maxsize 100
void InitDblStack(DblStack &s)
{
s.v= new int [maxsize];
if(!s.v)
{
cout<<"Failed to create one stack";
exit(1);
}
s.length=maxsize;
s.bot[0]=0; s.bot[1]=s.length-1;
s.top[0]=s.bot[0];
s.top[1]=s.bot[1];
}
判断栈空:
# define True 1
# define False 0
int IS_emptystack(DblStack &s)
{
if(s.bot[0]==s.top[0]&&s.bot[1]==s.top[1])
return True;
else
return False;
}
判断栈满:
int IS_fullstack(DblStack &s)
{
if((s.top[0]-1)==s.top[1]) return True;
else return False;
}
入栈(有两种方式: 1.top[0]入栈 2. top[1]入栈):
void Push_S(DblStack &s,int e,int style)// style决定了入栈方式(style 可以输入0或1)
{
if(IS_fullstack(s))
{
cout<<"栈满";
return ;
}
if(style)// style-->1-->top[1]入栈方式
{
s.v[s.top[1]]=e;
s.top[1]--;
}
else // style-->0-->top[0]入栈方式
{
s.v[s.top[0]]=e;
s.top[0]++;
}
return;
}
出栈(同样有两种方式):
int Pop_S(DblStack &s, int style)
{
if(IS_emptystack(s))
{
cout<<"栈空";
exit(1);
}
if(style)
{
s.top[1]++;
return s.v[s.top[1]];
}
else
{
s.top[0]--;
return s.v[s.top[0]];
}
}
本人不才,只能写出这么多,若存在错误欢迎指出