【笔试】25、栈和队列

来源:互联网 发布:顶尖数据恢复的注册码 编辑:程序博客网 时间:2024/05/04 08:02


用两个栈实现一个队列。队列的声明如下,请实现他的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。


/** *题目:用两个栈实现一个队列。队列的声明如下,请实现他的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 *时间:2015年8月27日09:52:06 *文件:CQueue.java *作者:cutter_point */package bishi.Offer50.y2015.m08.d27;import java.util.*;public class CQueue<T>{private Stack<T> stack1;private Stack<T> stack2;public CQueue(){stack1 = new Stack<T>();stack2 = new Stack<T>();}/** * 给队列末尾添加一个元素 * @param element */public void appendTail(final T element){stack1.push(element);}/** * 删除队首元素 * @return * @throws Exception */public T deleteHead() throws Exception{T p;if(stack2.empty()) //如果stack2是空的{if(stack1.empty()){throw new Exception("队列为空");}//ifelse{//把栈1中元素移动到栈2中while(!stack1.empty()){p = stack1.pop();stack2.push(p);}//while}//else}//ifreturn stack2.pop();}public static void Test(char actual, char expected){if (actual == expected)System.out.print("Test passed.\n");elseSystem.out.print("Test failed.\n");}public static void main(String[] args) throws Exception{CQueue<Character> queue = new CQueue<Character>();//我们自定义的队列//添加三个元素,a,b,cqueue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c');//看看我们的队列是否是按照队列的方式工作的char head = queue.deleteHead();Test(head, 'a');head = queue.deleteHead();Test(head, 'b');queue.appendTail('d');head = queue.deleteHead();Test(head, 'c');queue.appendTail('e');head = queue.deleteHead();Test(head, 'd');head = queue.deleteHead();Test(head, 'e');}}


0 0