博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笔试题(持续更新)
阅读量:4097 次
发布时间:2019-05-25

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

一,两个栈实现一个队列。

       解题思路:栈的特点是先进后出,队列的特点是先进先出,所以可以把队列1中的元素pop到队列2中,队列2再次取出的时候就可以了。

/** * 两个栈实现一个队列: * 思路:先将数据存到第一个栈里,再将第一个栈里的元素全部出栈到第二个栈,第二个栈出栈,即可达到先进先出 * 扩展:栈是Vector的一个子类,它实现了一个标准的后进先出的栈。 * 栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。 * 常用方法: * boolean empty(),测试堆栈是否为空。 * Object peek(),查看堆栈顶部的对象,但不从堆栈中移除它。 * Object pop(),移除堆栈顶部的对象,并作为此函数的值返回该对象。 * Object push(Object element),把项压入堆栈顶部。 * int search(Object element),返回对象在堆栈中的位置,以 1 为基数,栈顶的位置为1。 */public class StackToQueen
{ private Stack
stack1 = new Stack<>(); private Stack
stack2 = new Stack<>(); /** * 添加数据 * @param num */ public void add(T num){ stack1.push(num); } /** * pop出数据 * @param */ public void poll(){ if(stack1.isEmpty() && stack2.isEmpty()){ return; } //将stack1的元素放入stack2 while (stack1.size() > 0){ stack2.push(stack1.pop()); } return; } public T get(){ if(stack2.isEmpty()){ return null; } return stack2.pop(); } public static void main(String[] args) { StackToQueen
stackToQueen = new StackToQueen(); stackToQueen.add(1); stackToQueen.add(2); stackToQueen.add(3); stackToQueen.add(4); stackToQueen.add(5); stackToQueen.poll(); System.out.print(stackToQueen.get()); System.out.print(stackToQueen.get()); System.out.print(stackToQueen.get()); System.out.print(stackToQueen.get()); System.out.print(stackToQueen.get()); }}

二,两个队列实现一个栈。

       解题思路:队列一中除最后一个数外其余的数全部导入队列二后返回队列一中的元素,然后对队列二也是如此操作。

/** * 两个队列实现一个栈 * 思路:队列一中出最后一个数外其余的数全部导入队列二,然后返回队列中的元素,然后对队列二也是如此操作。 * Quenu的常用方法: * poll()   获取并移除此队列的头,如果此队列为空,则返回 null * remove()  获取并移除此队列的头,如果此队列为空,则抛出NoSuchElementException异常 * * peek()  获取队列的头但不移除此队列的头。如果此队列为空,则返回 null * element()  获取队列的头但不移除此队列的头。如果此队列为空,则将抛出NoSuchElementException异常 * * offer()  将指定的元素插入此队列(如果立即可行且不会违反容量限制),插入成功返回 true;否则返回 false。 *            当使用有容量限制的队列时,offer方法通常要优于 add方法——add方法可能无法插入元素,而只是抛出一个  IllegalStateException异常 * add()  将指定的元素插入此队列 */public class QueenToStack
{ Queue
queue1 = new LinkedList<>(); Queue
queue2 = new LinkedList<>(); //添加 public void push(T num){ queue1.offer(num); } //取出 public T pop(){ if (queue1.isEmpty() && queue2.isEmpty()) { throw new RuntimeException("queue is empty"); } if (!queue1.isEmpty() && queue2.isEmpty()) { while (queue1.size() > 1) { queue2.offer(queue1.poll()); } return queue1.poll(); } if (queue1.isEmpty() && !queue2.isEmpty()) { while (queue2.size() > 1) { queue1.offer(queue2.poll()); } return queue2.poll(); } return null; } public static void main(String[] args) { QueenToStack
queenToStack = new QueenToStack(); queenToStack.push(1); queenToStack.push(2); queenToStack.push(3); queenToStack.push(4); queenToStack.push(5); System.out.print(queenToStack.pop()); System.out.print(queenToStack.pop()); System.out.print(queenToStack.pop()); System.out.print(queenToStack.pop()); System.out.print(queenToStack.pop()); }}

 

转载地址:http://jzlii.baihongyu.com/

你可能感兴趣的文章
已选择过的酒品品种,第二次选择时,会提示选择重复---改进
查看>>
angularjs三级省市联动
查看>>
angularjs分页查询
查看>>
input type="number"数字过大时
查看>>
angularjs中的$watch
查看>>
点击旋转图片90度-jquery
查看>>
angualrjs--resolve使用
查看>>
AngularJS 无限滚动加载数据控件 ngInfiniteScroll
查看>>
用jsp实现登录,登录成功则跳转到登录成功页面,失败则跳转到失败页面
查看>>
jsp-session
查看>>
jsp--javabeans
查看>>
上传图片时预览获取图片原始的宽度和size大小
查看>>
web.xml文件的作用及基本配置
查看>>
HTML5头部信息解释
查看>>
angularjs默认选中--包括省市联动的默认选中
查看>>
加载页面时同时触发两个ajax请求,数据显示的顺序不一致
查看>>
浅谈ajax异步和同步加载的区别
查看>>
angualrjs实现分页查询
查看>>
js倒计时--截止某日期的倒计时和截止每晚12点的倒计时
查看>>
angularjs 使用ui.router 去掉url中的#号
查看>>