主题:双向栈问题
teamolina
[专家分:50] 发布于 2005-11-21 15:44:00
大家好,我是初学者,想请教大家一个问题,如何编写一个双向栈,初始化inistack(s),入栈push(s,i,x)和出栈pop(s,i) (其中i为0或1,用以分别指示设在数组两端的2个栈)。
回复列表 (共3个回复)
沙发
huofenghuang [专家分:1200] 发布于 2005-11-21 20:00:00
实质上还是栈的初始化,进栈出栈,只是参数i不同而已。进栈,先判断是否栈满,栈满返回,不满则将其设置为栈顶元素,栈长加一;出栈,先判断是否为空,空栈返回异常打印,非空则将栈长减一即可
板凳
fime20044 [专家分:230] 发布于 2006-01-01 20:51:00
算法如下
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 楼
teamolina [专家分:50] 发布于 2006-04-03 19:04:00
好久没上了,谢谢了!
我来回复