栈:先进后厨
队列:先进先出
二者在java中的使用:
栈:Stack类。是vector的一个子类,实现了标准的后进先出的规则。
定义一个栈:Stack<Integer> st;相关的函数:boolean empty() ;Object peek( );Object pop( );Object push(Object element);int search(Object element)
队列:队列是一种特殊的线性表,只允许在表的前端进行删除操作,在表的后端进行插入操作。
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
定义一个队列:Queue<String> queue = new LinkedList<String>();
问题1 :用两个栈实现队列。一个栈进入数据,另一个栈存储数据,可以得到出来时候的数据和进去另一个栈的顺序是一致的。
问题2:用栈实现pop,top,push,min函数 使得时间复杂度为O(1)。用空间换时间,利用一个辅助栈。