一.栈的实现
使用Java的集合类Stack
1.初始化
Stack<Integer> sk = new Stack<Integer>();
2.判断栈是否为空
sk.isEmpty()等价于empty();
3.将元素加入栈顶
sk.push(元素)
4.获取当前栈顶元素并删除
sk.pop()
5.获取当前栈顶元素不删除
sk.peek()
6.查找元素在栈中的位置,由栈底向栈顶方向数
sk.search(要查找的元素)
借用LinkedList来间接实现Stack
LinkedList是双端链表,可以当作堆栈、队列、双端队列来使用
初始化:LinkedList<Integer> sk=new LinkedList<Integer>();
LinkedList实现 | Stack实现 | |
向栈顶添加元素 | sk.addFirst(e) | sk.push(e) |
获取当前栈顶元素,并删除 | sk.removeFirst() | sk.pop() |
获得当前栈顶元素 | sk.peekFirst() | sk.peek() |
二.队列的实现
Java中虽然有Queue接口 ,但并没有给出队列的实现类,而LinkedList实现了Queue接口。因为LinkedList是双向链表,所以很方便的实现队列的所有功能。使用Queue时,尽量避免使用Collection的add()和remove()方法,因为add()和remove()方法在失败时会抛出异常;要使用offer()来加入元素,使用poll()来获取并删除元素,可以通过返回值判断成与否。
1.初始化
队列初始化:Queue<E> queue = new LinkedList<E>();
例如:Queue<Integer> queue=new LinkedList<Integer>();
2.判断队列是否为空
queue.isEmpty()
3.向队尾添加元素
queue.offer(元素) 或者 queue.offerLast(元素)
4.获取队首元素
queue.peek() 或者 queue.peekFirst()
5.获取队首元素并删除
queue.poll() 或者 pollFirst()