使用堆栈来模拟队列

请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,x):元素x入ST栈;POP(ST,x):ST栈顶元素出栈,赋给 变量x;Sempty(ST):判ST栈是否为空。那么如何利用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列; dequeue:删除一个元素出队列;queue_empty:判队列为空。(请写明算法的思想及必要的注释)【上海交通大学1999 二(12分)】
原来就想过模拟问题,不过一直都以为是一个堆栈,现在两个就好做了
enqueue(x){
    PUSH(S1,x);
}
dequeue(){
    if(!Sempty(s2))
    {       POP(S2,x);
      return x;}
    else
    {
       while(!Sempty(S1)){
          POS(S1,x);
          PUSH(S2,x);
       }
       if(Sempty(S2) return null;
       else {
                POP(S2,x);
                return x;
         }
    }
}
queue_empty(){
    return Sempty(S1)||Sempty(S2);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值