博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个堆栈实现一个队列和一叠两个队列实现【算法导论课后题】
阅读量:5930 次
发布时间:2019-06-19

本文共 778 字,大约阅读时间需要 2 分钟。

两个栈实现队列两个队列实现堆栈问题,网上有很多资料。这里仅仅是叙述操作方法的介绍觉得至少。

两个栈实现一个队列

思想:假设两个栈分别为s1,s2。对s1进行入队,出队时,先推断s2是否为空,假设是则将s1中元素压入s2并弹出最上面元素,假设不是,则直接弹出s2最上面的元素。

EnQueue(s1,s2,k){push(s1,k);}//出队DeQueue(s1,s2){if( IsEmptyStack(s2)){while(sizeofStack(s1) !=0){push(s2,pop(s1));}}if(IsEmptyStack(s2)){printf("stack overflow");}return pop(s2);}
两个队列实现一个栈

思想:一个队列用来入栈q1。还有一个作为中转站q2。对不为空的队列进行入栈和出栈操作,入栈时直接入队就可以。出栈时,先将队列中n-1个元素压入中转站,最后一个元素出队

push(q1,q2,k){if(IsEmptyQueue(q1)){EnQueue(q2,k);}else{EnQueue(q1,k);}}

出栈时须要两个暂时指针pushtmp和tmp作为入栈和中转站(该方法消耗空间)
pop(q1,q2){Queue pushtmp,tmp;if(IsEmptyQueue(q1)){pushtmp=q2;tmp=q1;}else{pushtmp=q1;tmp=q2;}if(IsEmptyQueue(pushtmp)){printf("OverFlow");}else{while(sizeof(pushtmp) !=1)DeQueue(tmp,DeQueue(pushtmp));}return Dequeue(pushtmp);}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
JS中加载cssText延时
查看>>
Vmware vSphere 5.0系列教程之四 vSphere网络原理及vSwitch简介
查看>>
sendmail在企业网上的应用(上)
查看>>
LeetCode问题6
查看>>
ipvsadm命令参数
查看>>
windows环境下安装apache及使用apache搭建反向代理
查看>>
python之(改写成了类)用smtplib模块实现第三方smtp发送邮件
查看>>
请你不要侮辱我的劳动成果侮辱我的程序代码,我不是传说中的菜鸟,请你不要对我进行人身***。...
查看>>
一个老程序员未来10年的计划目标
查看>>
学会拒绝不是什么坏事,要鼓起勇气说“不”
查看>>
假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)浙江杭州...
查看>>
我的友情链接
查看>>
keepalived主备切换后虚拟IP漂移慢的解决方法
查看>>
SAP系统参数设置
查看>>
LAMP架构之:httpd.conf配置文件解析
查看>>
oracle 锁
查看>>
[HDU]1728逃离迷宫
查看>>
中庸之道--适度的架构设计
查看>>
源代码实现LAMP的平台搭建
查看>>
echarts-简单入门
查看>>