07_用两个栈实现队列
来源:互联网 发布:云计算应用迁移方法 编辑:程序博客网 时间:2024/06/05 04:08
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
思路:用两个栈实现队列,需要两个栈Stack1和Stack2,push的时候直接push进Stack1。pop需要判断Stack1和Stack2中元素的情况,Stack1空的话,直接从Stack2
pop,Stack1不空的话,把Stack1的元素push进入Stack2,然后pop Stack2的值。
Java版本:
import java.util.Stack;public class Test { // <>指定泛型参数,java泛型参数只是使用一个大写字母来定义 // T 应填入一个类型,例如String。 // 注意:类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。 // java的数据类型分基本数据类型(原始数据类型)和引用数据类型 // 定义一个队列,队列里元素是T类型的。里面包含两个栈,插入栈和弹出栈 public static class Queue<T>{ //插入栈,只用于插入的数据 private Stack<T> stack1 =new Stack<>(); //弹出栈,只用于弹出数据 private Stack<T> stack2 =new Stack<>(); public Queue(){} public void appendTail(T t){ stack1.add(t); } public T deleteHead(){ // 先判断弹出栈是否为空,如果为空就将插入栈的所有数据弹出栈 // 并且将弹出的数据压入弹出栈中 if(stack2.size()<=0){ while(stack1.size()>0) { stack2.add(stack1.pop()); } } // 如果弹出栈中没有数据就抛出异常 if(stack2.size() == 0) throw new RuntimeException("No more element."); // 返回弹出栈的栈顶元素,对应的就是队首元素。 return stack2.pop(); } } public static void main(String[] args) { Queue<String> queue=new Queue<String>(); queue.appendTail("abcd"); queue.appendTail("你是谁?"); queue.appendTail("123"); queue.appendTail("+-"); System.out.println(queue.deleteHead()); System.out.println(queue.deleteHead()); System.out.println(queue.deleteHead()); System.out.println(queue.deleteHead()); }}
Python版本:
# -*- coding:utf-8 -*-class Queue(): def __init__(self): self.stack1 = [] self.stack2 = [] def appendTail(self,t): self.stack1.append(t) def deleteHead(self): if(len(self.stack2) <= 0): while(len(self.stack1) > 0): self.stack2.append(self.stack1.pop()) return self.stack2.pop()queue = Queue()queue.appendTail("abcd")queue.appendTail("你是谁?")queue.appendTail("123")queue.appendTail("+-")print(queue.deleteHead())print(queue.deleteHead())print(queue.deleteHead())print(queue.deleteHead())
0 0
- 07_用两个栈实现队列
- 简单题_用两个栈实现队列和用两个队列实现一个栈
- 九度_题目1512:用两个栈实现队列
- 剑指offer面七_用两个队列实现栈
- 面试题07_用两个栈实现队列——剑指offer系列
- 剑指Offer_面试题07_用两个栈实现队列
- 07_QueueWithTwoStack用两个栈实现队列
- 07 用两个栈实现队列
- 用两个栈实现队列 & 用两个队列实现栈
- 用两个队列实现栈&用两个栈实现队列
- 用两个栈实现队列 & 两个队列实现一个栈
- 两个栈实现队列&&用两个队列实现一个栈
- 用两个栈实现队列 & 两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 一步步制作RPM包
- iOS开发之pch文件创建并且设置为相对路径
- 网页中嵌入pdf在线浏览(支持IE8及其以上版本浏览器)
- C函数调用过程解析(x86-64 )
- 基于NDK编译ffmpeg库
- 07_用两个栈实现队列
- akka初学2
- Redis的主从配置
- jsp中比较数值精度丢失问题
- Python 中用 matplotlib 画散列点 (Scatter)
- 虚拟机配置共享磁盘
- revit隐藏线
- python_car_可视化
- 【算法】程序猿不写代码是不对的54