博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Implement Queue using Stacks (数据结构)
阅读量:5319 次
发布时间:2019-06-14

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

 

 

题意:

  用栈来实现队列。

 

思路:

  一个栈是不够的,至少要两个。

  (1)插入。永远只插入到stack1中(插到栈顶)。

  (2)弹出。如果stack2不为空,直接弹出stack2的栈顶,否则,将stack1中的所有元素转移到stack2中,栈顶自然就是队头了,再弹出。

  (3)返回队头。与(2)一样。

  (4)是否为空。判断两个栈是否同时为空即可。

 

  只要保证stack2为空时才可以将stack1转移到stack2中,就可以保证两边并不会产生混乱而出错。

 

1 class Queue { 2 /* 3     // Push element x to the back of queue. 4     void push(int x) { 5          6     } 7  8     // Removes the element from in front of queue. 9     void pop(void) {10         11     }12 13     // Get the front element.14     int peek(void) {15         16     }17 18     // Return whether the queue is empty.19     bool empty(void) {20         21     }22 */  23     stack
stack1,stack2;24 public:25 bool change()//当stack2为空时,将stack1转到stack2中26 {27 while(!stack1.empty())28 {29 stack2.push(stack1.top());30 stack1.pop();31 }32 if(stack2.empty()) return true;33 else return false;34 } 35 void push(int x)36 {37 stack1.push(x);38 }39 void pop(void)40 {41 if(!stack2.empty()) stack2.pop();42 else if(!change()) stack2.pop();43 }44 int peek(void)45 {46 if(!stack2.empty()) return stack2.top();47 else48 {49 if(!change()) return stack2.top();50 return 0;51 }52 }53 bool empty(void)54 {55 if(stack1.empty()&&stack2.empty()) return true;56 else return false;57 }58 };
AC代码

 

转载于:https://www.cnblogs.com/xcw0754/p/4927606.html

你可能感兴趣的文章
IntelliJ debug grails 无效的解决办法
查看>>
Base64编码
查看>>
01 div+css 为什么需要div+css布局
查看>>
黑马程序员——c语言学习心得——位运算符
查看>>
C# Icon转Byte , Byte转Icon
查看>>
博客开篇,数据转移
查看>>
spring boot 自学笔记(四) Redis集成—Jedis
查看>>
Android应用程序安装过程浅析
查看>>
Crazyflie 2.0 System Architecture
查看>>
用react native 做的一个推酷client
查看>>
B. Ohana Cleans Up(Codeforces Round #309 (Div. 2))
查看>>
Vim 简易配置
查看>>
电梯UI部分
查看>>
2016.07.15
查看>>
Vue.js 3.0 新特性预览
查看>>
checkbox中把选项文字与小圆圈关联上
查看>>
django admin后台显示中文
查看>>
git命令提交新项目
查看>>
CSS盒模型
查看>>
Say Hello to ConstraintLayout
查看>>