使用LinkedList实现Stack跟Queue

使用LinkedList实现Stack和Queue

虽然在java.util包中有Stack,但是不赞成使用。建议使用如下的Stack  !!!

 

 

先看看是如何实现的:

package com.wjy.linkedlist.stack;

import java.util.LinkedList;

public class Stack<T> {
	private LinkedList<T> storage=new LinkedList<T>();
	public void push(T t){
		storage.addFirst(t);
	}
	public T peek(){
		return storage.getFirst();
	}
	public T pop(){
		return storage.removeFirst();
	}
	public boolean isEmpty(){
		return storage.isEmpty();
	}
	public String toString(){
		return storage.toString();
	}
}

 看看测试代码:

package com.wjy.linkedlist.stack;

public class MainTest {
	public static void main(String args[]){
		Stack<String> myStack=new Stack<String>();
		for(String item : "hello my baby".split(" ")){
			myStack.push(item);
		}
		while(!myStack.isEmpty()){
			System.out.println(myStack.pop());
		}
	}
}
/*output
baby
my
hello
///

 

//********************************************************************************************************************************

先看看最普遍的Queue,是java.util包中的。需要LinkedList来实例化它:

package com.wjy.linkedlist.queue;

import java.util.LinkedList;
import java.util.Queue;

public class QueueTest {
	public static void main(String args[]){
		Queue<String> myQueue=new LinkedList<String>();
		for(String item : "hello my baby".split(" ")){
			myQueue.offer(item);
		}
		while(!myQueue.isEmpty()){
			System.out.println(myQueue.poll());
		}
	}
}

 运行结果:

hello
my
baby

 

以上是普通的队列。

 

注意注意:想想这样一种情况,在飞机场,当飞机临近起飞时,这架飞机的乘客可以插队先行登机。所以PriorityQueue就是为了这种情形设计的。

但是注意:Integer,String和Character可以和PriorityQueue一起使用的原因是:这些类已经内建了自然排序。如果你想在PriorityQueue中使用自己的类,就必须包括额外的功能以产生自然排序,或者必须提供自己的Comparator。

 

看看PriorityQueue的使用:

package com.wjy.priorityQueue;

import java.util.PriorityQueue;

public class PriorityQueueTest {
	public static void main(String args[]){
		PriorityQueue<String> myQueue=new PriorityQueue<String>();
		for(String item : "hello my baby".split(" ")){
			myQueue.offer(item);
		}
		while(!myQueue.isEmpty()){
			System.out.println(myQueue.poll());
		}
	}
}
/*Output:
baby
hello
my
///