1. 程式人生 > >《演算法(第四版)》1.3佇列的連結串列實現

《演算法(第四版)》1.3佇列的連結串列實現

package one.three;

import java.util.Iterator;

public class Queue<Item> implements Iterable<Item>{
	private Node first;	//佇列的第一個結點
	private Node last;	//佇列的最後一個結點
	private int N;		//佇列中的元素個數
	private class Node{  //定義了結點的巢狀類
		Item item;
		Node next;
	}
	
	public boolean isEmpty() {	//判斷佇列是否為空
		return first==null;
	}  
	
	public int size() {  //返回佇列大小
		return N;
	}
	
	public void enqueue(Item item) {  //向佇列末尾新增元素
		Node oldlast = last;
		last = new Node();
		last.item = item;
		last.next = null;
		if(isEmpty()) {
			first = last;
		}else {
			oldlast.next = last;
		}
		N++;
	}
	
	public Item dequeue() {  //表頭出佇列,並返回一個值
		Item item = first.item;
		first = first.next;
		if(isEmpty()) {
			last = null;
		}
		N--;
		return item;
	}

	@Override
	public Iterator<Item> iterator() {
		// TODO Auto-generated method stub
		return null;
	}
	
	public static void main(String args[]) {
		Queue<String> q = new Queue<String>();
		q.enqueue("1");
		q.enqueue("2");
		q.enqueue("3");
		int size = q.size();
		for(int i=0;i<size;i++){
			System.out.println(q.dequeue());
		}
	}
}