算法导论第三版 10.1-6习题答案

10.1-6
答案:
设定两个栈为s1和s2,那么s1用来ENQUEUE(),s2用来DEQUEUE(),当然s1需要用来为DEQUEUE()操作作过渡,流程如下:
(1)首先将入队元素1,2,3依次放进栈s1。此时s1元素从低到高为1,2,3,s2中暂时无元素。

(2)然后依次将1,2,3从s1中弹出并且放入s2中。此时s1栈空,s2中元素从低到高依次为3,2,1

(3)若此时进行还需要ENQUEUE()操作将x,y入队,那么则直接将入队元素放进s1中。此时s1中元素从低到高为x,y,s2中元素从低到高为3,2,1

(4)若此时需要进行DEQUEUE()操作,则直接从s2中弹出一个元素(当前弹出的元素应该为1);若s2空,则执行(2)操作,再执行DEQUEUE()操作。此时s1栈空,s2中元素从低到高依次为y,x

所以
此时的ENQUEUE()的时间复杂度为O(1)
DEQUEUE()时间复杂度可能是O(1),可能是O(n)。(当执行(4)操作分号前的操作时候为O(1),当执行分号后的操作时候为O(n)),所以DEQUEUE()时间总的复杂度<=O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值