Java 環形緩衝器(Ring Buffer)

 環形緩衝器(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;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章