回 帖 发 新 帖 刷新版面

主题:双向栈问题

大家好,我是初学者,想请教大家一个问题,如何编写一个双向栈,初始化inistack(s),入栈push(s,i,x)和出栈pop(s,i) (其中i为0或1,用以分别指示设在数组两端的2个栈)。
    

回复列表 (共3个回复)

沙发

实质上还是栈的初始化,进栈出栈,只是参数i不同而已。进栈,先判断是否栈满,栈满返回,不满则将其设置为栈顶元素,栈长加一;出栈,先判断是否为空,空栈返回异常打印,非空则将栈长减一即可

板凳

算法如下
typedef struct{
                    Elemtype *base[2];
                    Elemtype *top[2];
                  }BDStacktype; //双向栈类型
Status Init_Stack(BDStacktype &tws,int m)//初始化一个大小为m的双向栈tws
{
  tws.base[0]=(Elemtype*)malloc(sizeof(Elemtype));
  tws.base[1]=tws.base[0]+m;
  tws.top[0]=tws.base[0];
  tws.top[1]=tws.base[1];
  return OK;
}//Init_Stack

3 楼

好久没上了,谢谢了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册