環形緩衝器(Ring Buffer):環形隊列,這裏使用數組實現,但並未用上環形功能,因爲設置了隊滿直接出隊清空隊列,如果只讀取部分數據,又或者想要覆蓋衝寫,則可以用上環形功能
package chapter1_3;
/**
* @author : jeasion
* @name
* @comment
* @return
*/
public class practice39 {
}
class RingBuffer<Item> {
int size;
int capacity = 100;
class Node {
Item item;
Node next;
}
Node[] nodes = (Node[]) new Object[capacity];
public boolean isFull() {
return size == (capacity - 1);
};
public boolean isEmpty() {
return size == 0;
}
public void enqueue(Item item) {
nodes[size] = (Node) new Object();
nodes[size].item = item;
nodes[size].next = null;
if (size > 0 && !isFull()) {
nodes[size - 1].next = nodes[size];
}
if (isFull()) {
nodes[size - 1] = nodes[0];
System.out.println("緩衝區滿,將執行出隊操作!");
dequeue();
}
}
public Item dequeue() {
Node temp = nodes[size];
nodes[size].item = null;
nodes[size--] = null;
if (isEmpty()) {
System.out.println("緩衝區已清空,可以執行讀入操作!");
}
return temp.item;
}
}