环形缓冲器(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;
	}
}