Implement Stack using Queues
2015-07-07 15:45
423 查看
1 题目描述
Implement the following operations of a stack using queues.push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
empty() -- Return whether the stack is empty.
Notes:
You must use only standard operations of a queue -- which means only
push to back,
peek/pop from front,
size,
and
is emptyoperations are valid.
Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
题目出处:https://leetcode.com/problems/implement-stack-using-queues/
2 解题思路
1.题目的意思是使用队列实现栈的操作,这两个数据结构的主要区别在于一个将元素加入到尾部,一个将元素加入头部,因此考虑使用两个队列来处理这两种差异方式,始终保持一个队列为空,每次添加元素时,添加到空队列中,然后将非空队列添加到该队列中,并清空。2.注意一下java中Queue的用法,参考网址:http://www.cnblogs.com/linjiqin/archive/2013/05/30/3107656.html
3 源代码
package com.larry.easy; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; /** * 使用两个Queue来实现栈 * @author admin * */ public class ImplementStackUsingQueues { //始终保持一个队列为空;添加时,添加到空队列,然后将另一个加入 private Queue<Integer> que1 = new LinkedList<Integer>();//使用Queue时采用这种方式 private Queue<Integer> que2 = new LinkedList<Integer>(); // Push element x onto stack. public void push(int x) { if(que1.isEmpty()) { que1.offer(x); que1.addAll(que2); que2.clear(); }else{ que2.offer(x); que2.addAll(que1); que1.clear(); } } // Removes the element on top of the stack. public void pop() { if(!que1.isEmpty()) que1.poll(); if(!que2.isEmpty()) que2.poll(); } // Get the top element. 4000 public int top() { if(!que1.isEmpty()) return que1.peek(); if(!que2.isEmpty()) return que2.peek(); return 0; } // Return whether the stack is empty. public boolean empty() { if(que1.isEmpty() && que2.isEmpty()) return true; else return false; } public static void main(String[] args) { ImplementStackUsingQueues isuq = new ImplementStackUsingQueues(); isuq.push(1); isuq.push(2); isuq.pop(); System.out.println(isuq.top()); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统