Java中的LinkedList 是采用双向循环列表实现的。
利用LinkedList 可以实现栈(stack)、队列(queue)、双向队列(double-ended queue)
请看下面两个例子:
1、栈(stack):后进先出(LIFO),仅对栈顶元素操作。
import java.util.LinkedList;
class MyStack{ private LinkedList ll = new LinkedList(); public void push(Object o){ // 入栈 ll.addFirst(o); } public Object pop(){ // 出栈,指从栈顶删除该元素并返回 return ll.removeFirst(); } public Object peek(){ // 查看栈顶元素 return ll.getFirst(); } public boolean isEmpty(){ // 判断栈是否为空 return ll.isEmpty(); } public int getSize(){ // 得到栈的大小 return ll.size(); } }
class Test{ public static void main(String[] args){ MyStack ms = new MyStack(); ms.push("zero"); ms.push("one"); ms.push("two"); ms.push("three"); ms.push("four"); ms.push("five"); System.out.println(ms.getSize()); System.out.println(ms.peek()); System.out.println(ms.pop()); System.out.println(ms.peek()); System.out.println(ms.isEmpty()); } }
2、 队列(queue):先进先出(FIFO),在队尾增加元素,对头删除元素。
import java.util.LinkedList;
class MyQueue{ private LinkedList ll = new LinkedList(); public void push(Object o){ //进队列 ll.addLast(o); } public Object get(){ //出队列 return ll.removeFirst(); } public boolean isEmpty(){ return ll.isEmpty(); } }
class Test{ public static void main(String[] args){ MyQueue mq = new MyQueue(); mq.push("zero"); mq.push("one"); mq.push("two"); System.out.println(mq.get()); System.out.println(mq.get()); System.out.println(mq.get()); System.out.println(mq.isEmpty()); } }