|  
 
 
设计包含max函数的队列 问题: 
假设有这样一个拥有3个操作的队列: 
1.EnQueue(v)看,将v加入队列中 
2.DeQueue:使队列中的队首元素删除并返回此元素 
3.MaxElement:返回队列中的最大元素 
设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能的降低。 
分析与解法: 
先实现一个带有max函数的栈,然后用两个栈实现一个队列 
[java] view plaincopyprint? 01.import java.util.LinkedList;   02.   03.   04.public class Test_3_7 {   05.   06.    /**  07.     * @param args  08.     */   09.    public static void main(String[] args) {   10.        Queue queue = new Queue();   11.        queue.EnQueue(4);   12.        System.out.println(queue.MaxElement());   13.        queue.EnQueue(1);   14.        System.out.println(queue.MaxElement());   15.        queue.EnQueue(5);   16.        System.out.println(queue.MaxElement());   17.        queue.EnQueue(3);   18.        System.out.println(queue.MaxElement());   19.        queue.DeQueue();   20.        System.out.println(queue.MaxElement());   21.        queue.DeQueue();   22.        System.out.println(queue.MaxElement());   23.        queue.DeQueue();   24.        System.out.println(queue.MaxElement());   25.           26.   27.    }   28.       29.       30.}   31.//先实现一个具有查找最大值功能的栈    32.class Stack{   33.    LinkedList<Integer> datalist = new LinkedList<Integer>();   34.    LinkedList<Integer> helplist = new LinkedList<Integer>();   35.    public void push(int i){   36.        if(datalist.size()==0){   [1] [2] 下一页  
 |