隊列是一種特殊的線性結構,它只容許在隊列的首部(head)進行刪除操做,這稱爲「出隊」,而在隊列的尾部(tail)進行插入操做,這稱爲「入隊」,當隊列中沒有元素時(即head=tail),稱爲空隊列。
隊列將是咱們從此學習廣搜以及隊列優化(Bellman-Ford)最短路算法的核心數據結構。
代碼以下:java
import java.util.LinkedList; import java.util.Queue; public class D隊列 { public static void main(String[] args) { Queue<Integer> queue = new LinkedList<>();//建立隊列 queue.offer(1);//如下是添加元素進對列 queue.offer(2); queue.offer(3); queue.offer(4); for(int e : queue) {//遍歷輸出,定義一個變量e遍歷隊列輸出 System.out.println(e);//1 2 3 4 } System.out.println("**********"); System.out.println("poll : " + queue.poll());//1,poll取出並刪除隊頭的元素 System.out.println("----------"); for(int e : queue) { System.out.println(e); //2 3 4 } System.out.println("elemet is: " + queue.element());//2 System.out.println("----------"); for(int e : queue) { System.out.println(e);//2 3 4 } System.out.println("peek : " + queue.peek());//2 System.out.println("**********"); for(int e : queue) { System.out.println(e);//2 3 4 } } }
1.Java中隊列的建立以及頭文件算法
Queue<Integer> queue = new LinkedList<>(); 頭文件: import java.util.LinkedList; import java.util.Queue;
2.關於隊列的「出入」數據結構
往隊列中添加元素:add(若是隊列已經滿,則拋出異常); put( 若是已經滿了,則等待它爲空或者拋出異常); offer(已滿,返回false); 從隊列中取出或者刪除元素: remove(直接刪除隊頭的元素); peek(直接取出隊頭元素並不刪除); element(對peek方法進行簡單封裝,若是隊頭元素存在則取出,不存在則拋出異常); poll(取出並刪除隊頭的元素,當隊列爲空則返回null); take(取出並刪除隊頭元素,爲空則等待或者拋出異常); offer()方法通常與pool()方法相對應; put方法通常與take(方法相對應);
3.對上述代碼的分解
(1).poll()學習
System.out.println("poll : " + queue.poll());//1,poll取出並刪除隊頭的元素
(2).element()優化
System.out.println("elemet is: " + queue.element());//2由於上一個已經刪除了隊頭元素1,因此此時隊頭元素是2,直接取出。
(3).peek()code
System.out.println("peek : " + queue.peek());//2直接取出並不刪除