P59、面试题7:用两个栈实现队列
题目:用两个栈实现一个队列。队列声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列为插入结点和在队列头部删除结点的功能。
package com.yyq; import java.util.Stack; /**
* Created by Administrator on 2015/9/8.
*/
public class Queue<T> {
private T value;
public static final Stack stack1 = new Stack();
public static final Stack stack2 = new Stack();
public T getValue() {
return value;
} public void setValue(T value) {
this.value = value;
} public Queue(){
} public void appendTail(T value){
stack1.push(value);
} public T deleteHead(){
T temp;
if (stack2.size() <= 0){
while(stack1.size() > 0){
temp = (T)stack1.pop();
stack2.push(temp);
}
}
if (stack2.size() == 0){
System.out.println("The Queue is empty!!");
}
return (T)stack2.pop();
}
}
实现类:
package com.yyq; /**
* Created by Administrator on 2015/9/8.
*/
public class QueueWithTwoStacks {
void Test(char actual, char expected)
{
if(actual == expected)
System.out.println("Test passed.\n");
else
System.out.println("Test failed.\n");
} public static void main(String args[]){
QueueWithTwoStacks queueWithTwoStacks = new QueueWithTwoStacks();
Queue<Character> queue = new Queue<Character>();
queue.appendTail('a');
queue.appendTail('b');
queue.appendTail('c');
queue.appendTail('d');
queue.appendTail('e');
queue.appendTail('f'); char head = queue.deleteHead();
queueWithTwoStacks.Test(head, 'a'); head = queue.deleteHead();
queueWithTwoStacks.Test(head, 'b'); queue.appendTail('g');
head = queue.deleteHead();
queueWithTwoStacks.Test(head, 'c'); queue.appendTail('h');
head = queue.deleteHead();
queueWithTwoStacks.Test(head, 'd'); head = queue.deleteHead();
queueWithTwoStacks.Test(head, 'e');
}
}
P59、面试题7:用两个栈实现队列的更多相关文章
- 【剑指offer】面试题 9. 用两个栈实现队列
面试题 9. 用两个栈实现队列 题目描述 题目:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解答过程 import java.util.Stack; publ ...
- 剑指offer编程题Java实现——面试题7用两个栈实现队列
题目:用两个栈实现一个队列.队列的声明如下:请实现他的两个函数appendTail和deleteHead, 分别完成在队列尾部插入节点和在队列头部删除节点的功能. package Solution; ...
- 剑指Offer-【面试题07:两个栈实现队列】
package com.cxz.question7; import java.util.Stack; /** * 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail 和del ...
- 剑指Offer:面试题7——用两个栈实现队列(java实现)
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 首先定义两个栈 Stack<Integer> stack1 = new Stack<I ...
- 剑指offter-面试题7.用两个栈实现队列
题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead 分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: template <typ ...
- 面试题07_用两个栈实现队列——剑指offer系列
题目描写叙述: 用两个栈实现一个队列. 队列的声明例如以下,请实现它的两个函数appendTail 和 deleteHead.分别完毕在队列尾部插入结点和在队列头部删除结点的功能. 解题思路: 栈的特 ...
- 《剑指offer》面试题7 用两个栈实现队列 Java版
书中方法:队列是先进先出的,栈是先进后出的,试想把一串数压入A栈,接着一个个出栈并压入B栈,便会完成"头在下"到"头在上"的转变.B栈内还有元素时,直接出栈表示 ...
- 【剑指Offer】面试题09. 用两个栈实现队列
题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,delete ...
- 《剑指offer》面试题09. 用两个栈实现队列
问题描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,dele ...
- 《剑指offer》面试题7—用两个栈实现队列
题目:给出队列声明,要求实现AppendTail和DeleteHead函数. template <typename T>class CQueue{public: void AppendTa ...
随机推荐
- ZStack之ZDApp_Init解析
[注:本文源自博客园http://www.cnblogs.com/cherishui/,为尊重劳动者成果,如需转载请保留此行] 以下代码分析基于ZStack-CC2530-2.5.1a,开发环境为 I ...
- 【转】DataGridView绑定数据源的几种方式
第一种:DataSet ds=new DataSet (); this.dataGridView1.DataSource=ds.Table[0]; 第二种:DataTable dt=new DataT ...
- Asp.net Response.Redirect with post data
string url = String.Format("{0}://{1}/{2}", Request.Url.Scheme, Request.Url.Authority, &qu ...
- Get code int value for different encoding
http://msdn.microsoft.com/en-us/library/system.text.encodinginfo.getencoding%28v=vs.110%29.aspx usin ...
- php正确解码javascript中通过escape编码后的字符
js的escape如何在PHP中来解呢? 下面的这个函数可以正确的解析,网上有不少unescape的函数,但好用的不多. 这是很久以前收集的一个,不知道谁写的了,但经过测试没有问题~ function ...
- img test
- C语言数据结构之栈:中缀表达式的计算
*注:本人技术不咋的,就是拿代码出来和大家看看,代码漏洞百出,完全没有优化,主要看气质,是吧 学了数据结构——栈,当然少不了习题.习题中最难的也是最有意思的就是这个中缀表达式的计算了(可以算+-*/和 ...
- 使用plspl创建orcale作业
1.由于权限问题,第一步应先以sys账户登录,路径:工具->DBMS 调试程序->作业 ,新建一个作业,出现如下图的窗口 2.开始依次填写相应内容,Name为作业名字,注意要加上用户名前 ...
- centos6.5安装配置LDAP服务[转]
安装之前查一下 1 find / -name openldap* centos6.4默认安装了LDAP,但没有装ldap-server和ldap-client 于是yum安装 1 su root 2 ...
- Oracle RAC集群安装之:Grid软件安装过程蓝屏
前几天在安装一套RAC服务器的过程中,遇到了蓝屏事件,折腾了蛮久(在排查是否存在硬件问题上花费了相当多一部分时间),整个过程大概说明如下: 1.两台华为的PC SERVER,操作系统为WIN SERV ...