資料結構與演算法-佇列
程式碼示例
登入後複製
package com.cwl.data.queue;
/**
* @program: data-structure
* @description: 佇列
* @author: ChenWenLong
* @create: 2019-09-10 10:12
**/
public class MyQueue<T> {
// 隊頭
private Node<T> front;
// 隊尾
private Node<T> rear;
// 元素個數
private int size;
//內部節點
private class Node<T> {
Node<T> next = null;// 節點的引用,指向下一個節點
T data;// 節點的物件,即內容
public Node(T data) {
this.data = data;
}
}
/**
* 功能描述:
* 〈建立一個空的佇列〉
*
* @params : []
* @return :
* @author : cwl
* @date : 2019/9/10 10:14
*/
public MyQueue() {
rear = front = null;
}
/**
* 功能描述:
* 〈入佇列〉
*
* @params : [data]
* @return : void
* @author : cwl
* @date : 2019/9/10 10:16
*/
public void enQueue(T data) {
Node<T> node = new Node<T>(data);
if (isEmputy()) {
front = rear = node;
} else {
rear.next= node;
rear = node;
}
size++;
}
/**
* 功能描述:
* 〈出佇列〉
*
* @params : []
* @return : T
* @author : cwl
* @date : 2019/9/10 10:17
*/
public T deQueue() {
if (isEmputy()) {
throw new RuntimeException("佇列為空");
}
Node<T> delete = front;
front = delete.next;
delete.next = null;;
size--;
if (size == 0) {
// 刪除掉最後一個元素時,front值已經為null,但rear還是指向該節點,需要將rear置為null
// 最後一個結點front和rear兩個引用都沒指向它,幫助GC處理該節點物件
rear = front;
}
return delete.data;
}
/**
* 功能描述:
* 〈判斷佇列是否為空〉
*
* @params : []
* @return : boolean
* @author : cwl
* @date : 2019/9/10 10:21
*/
public boolean isEmputy() {
return (front == null && rear == null) ? true : false;
}
/**
* 功能描述:
* 〈獲取佇列的元素個數〉
*
* @params : []
* @return : int
* @author : cwl
* @date : 2019/9/10 10:22
*/
public int size() {
return this.size;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30276376/viewspace-2867643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構與演算法——佇列(環形佇列)資料結構演算法佇列
- 資料結構與演算法-棧與佇列資料結構演算法佇列
- 資料結構與演算法分析——佇列資料結構演算法佇列
- javascript資料結構與演算法-佇列JavaScript資料結構演算法佇列
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- python演算法與資料結構-佇列(44)Python演算法資料結構佇列
- 資料結構與演算法—稀疏陣列和佇列資料結構演算法陣列佇列
- 資料結構-棧與佇列資料結構佇列
- 《資料結構與演算法》——表、棧和佇列資料結構演算法佇列
- 資料結構與演算法(二)佇列、棧、連結串列資料結構演算法佇列
- 02Javascript資料結構與演算法 之 佇列JavaScript資料結構演算法佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- 資料結構和演算法(六)佇列資料結構演算法佇列
- 資料結構 - 佇列資料結構佇列
- 資料結構-佇列資料結構佇列
- 【資料結構-----佇列】資料結構佇列
- 演算法與資料結構番外(1):優先佇列演算法資料結構佇列
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- 資料結構-佇列、棧資料結構佇列
- 資料結構之「佇列」資料結構佇列
- 資料結構-佇列-樹資料結構佇列
- 結構與演算法(02):佇列和棧結構演算法佇列
- Python資料結構與演算法系列四:棧和佇列Python資料結構演算法佇列
- 《JavaScript資料結構與演算法》筆記——第4章 佇列JavaScript資料結構演算法筆記佇列
- 『演算法與資料結構』優先佇列 二叉堆演算法資料結構佇列
- 佇列 ADT 【資料結構與演算法分析 c 語言描述】佇列資料結構演算法
- 前端學習 資料結構與演算法 快速入門 系列 —— 佇列和雙端佇列前端資料結構演算法佇列
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列
- C#資料結構與演算法2-C# 棧和佇列C#資料結構演算法佇列
- C++資料結構-佇列C++資料結構佇列
- JavaScript資料結構之-佇列JavaScript資料結構佇列
- 資料結構之佇列(Queue)資料結構佇列
- 資料結構(棧和佇列)資料結構佇列
- js資料結構--佇列(queue)JS資料結構佇列
- JavaScript資料結構03 – 佇列JavaScript資料結構佇列
- JavaScript資料結構之佇列JavaScript資料結構佇列
- 資料結構—棧和佇列資料結構佇列
- JavaScript資料結構03 - 佇列JavaScript資料結構佇列