首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java-2.设计包孕min函数的栈

2012-09-20 
java-2.设计包含min函数的栈具体思路参见:http://zhedahht.blog.163.com/blog/static/2541117420071289522

java-2.设计包含min函数的栈
具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/

import java.util.ArrayList;import java.util.List;public class MinStack {//maybe we can use origin array rather than ArrayListprivate List<Integer> dataStack;private List<Integer> auxStack;//store the position of MinElementpublic static void main(String[] args) {MinStack minStack=new MinStack();minStack.push(3);minStack.printStatus();minStack.push(4);minStack.printStatus();minStack.push(2);minStack.printStatus();minStack.push(1);minStack.printStatus();minStack.pop();minStack.printStatus();minStack.pop();minStack.printStatus();minStack.push(0);minStack.printStatus();}public MinStack(){dataStack=new ArrayList<Integer>();auxStack=new ArrayList<Integer>();}public void push(int item){if(isEmpty()){dataStack.add(item);auxStack.add(0);//position=0}else{dataStack.add(item);int minIndex=auxStack.get(auxStack.size()-1);int min=dataStack.get(minIndex);if(min>item){auxStack.add(dataStack.size()-1);}else{auxStack.add(minIndex);}}}public int pop(){int top=-1;if(isEmpty()){System.out.println("no element,no pop");}else{auxStack.remove(auxStack.size()-1);top=dataStack.remove(dataStack.size()-1);}return top;}public int min(){int min=-1;if(!isEmpty()){int minIndex=auxStack.get(auxStack.size()-1);min=dataStack.get(minIndex);}return min;}public boolean isEmpty(){return dataStack.size()==0;}public void printStatus(){System.out.println("数据栈             辅助栈                最小值");for(int i=0;i<dataStack.size();i++){System.out.print(dataStack.get(i)+",");}System.out.print("          ");for(int i=0;i<dataStack.size();i++){System.out.print(auxStack.get(i)+",");}System.out.print("           ");System.out.print(this.min());System.out.println();}/*步骤              数据栈            辅助栈                最小值1.push 3    3          0             32.push 4    3,4        0,0           33.push 2    3,4,2      0,0,2         24.push 1    3,4,2,1    0,0,2,3       15.pop       3,4,2      0,0,2         26.pop       3,4        0,0           37.push 0    3,4,0      0,0,2         0 */}

热点排行