Java資料結構之——佇列:通過連結串列和陣列實現
阿新 • • 發佈:2019-01-13
//連結串列實現佇列 class Node<E>{ Node<E> next = null; E data; public Node(E data){ this.data = data; } } public class ListQueue<E>{ private Node<E> head = null; private Node<E> tail = null; public boolean empty(){ return head==null; } public void put(E data){ Node<E> newNode = new Node<E> (data); if(head == null && tail == null){ head = tail = newNode; } else{ tail.next = newNode; tail = tail.next; } } public E pop(){ if(this.empty()){ return null; } E data = head.data; head = head.next; return data; } public int size(){ Node<E> tmp = head; int n = 0; while(tmp != null){ n++; tmp = tmp.next; } return n; } public static void main(String[] args){ ListQueue<Integer> q = new ListQueue<Integer>(); q.put(2); q.put(5); q.put(6); System.out.println("The length:" + q.size()); System.out.println("The first element:"+ q.pop()); } }
下面介紹陣列實現佇列的方式,為了實現多執行緒安全,增加了對佇列操作的同步。
//陣列實現佇列 import java.util.LinkedList; public class ArrayQueue<E>{ private LinkedList<E> list = new LinkedList<E>(); private int size = 0; public synchronized void put(E e){ list.addLast(e); size++; } public synchronized E pop(){ size--; return list.removeFirst(); } public synchronized boolean empty(){ return size==0; } public synchronized int size(){ return size; } }