《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

来源:互联网 发布:规划算法 pdf 编辑:程序博客网 时间:2024/06/06 05:19

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
栈的基本特点:
  1. 先入后出,后入先出。
  2. 除头尾节点之外,每个元素有一个前驱,一个后继。

队列的基本特点

     1 .队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。

     2 .队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。

思路
 *题目要求用两个栈来实现,这时候就可以考虑 当push的时候,把记录全部push到stack1中,
 *当要pop的时候,我们先把stack1中的所有记录pop出来,然后再push到stack2中,
 *这样stack2中最上面的那条记录就是之前最先进入栈的元素,
 *然后把它pop出来
 *把需要的元素pop出来之后把剩下的数据重新push回到stack1中。
public class Demo {Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();// 例如 stack1 中push 顺序为1,2,3,4,5  所以此时1号栈中 栈底元素为1   栈顶为5public void push(int node) {stack1.push(node);}public int pop(){// 此时 栈1pop出的依次是 5 ,4 ,3 ,2 ,1  而进入栈2的顺序也是5 ,4 ,3 ,2 ,1// 此时2号栈中 栈底元素为5  栈顶为1while(!stack1.isEmpty()) {stack2.push(stack1.pop());}//弹出2号栈 栈顶元素int value = stack2.pop();//剩下的数据重新push回到stack1中。while(!stack2.isEmpty()) {stack1.push(stack2.pop());}return value;}}

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 迷你世界地图下载失败怎么办 网页上广告太多怎么办 网页打开广告太多怎么办 PS界面图标小怎么办 百度地图反应慢怎么办 汽车导航不播报怎么办 wps菜单栏隐藏了怎么办 手机导航声音小怎么办 手机导航不好用怎么办 手机导航箭头不准怎么办 手机处于离线状态怎么办 穷人让人看不起怎么办 非洲人口过多怎么办啊 鼻子上长白头怎么办 高铁查到违禁品怎么办 青岛涂料备案证怎么办 淘宝集运不能寄怎么办 防静电指数过高怎么办 手机玻璃上裂痕怎么办 车辆环保检测不合格怎么办 眼镜被擦破镜片怎么办 手机边框有刮痕怎么办 手机金属壳磨损怎么办 手机后面凹下去怎么办 pu鞋子有刮痕怎么办 漆皮皮鞋有刮痕怎么办 手机有屏幕刮痕怎么办 鞋子刮花了怎么办 手机上屏幕划痕怎么办 篮球鞋磨小脚趾怎么办 小白鞋边上蹭黑怎么办 行李忘在高铁上怎么办 新加坡东西掉了怎么办 怕空调怕风吹怎么办 夏天不能吹空调怎么办 mac忘了用户名怎么办 物流托运货物损坏怎么办 拉勾网投递成功后怎么办 土地租赁到期后怎么办 铁防盗网生锈了怎么办 高铁红线外怎么办