算法第四版 练习 1.3.39

来源:互联网 发布:长虹pf21800h数据 编辑:程序博客网 时间:2024/06/06 03:52

RingBuffer.java

public class RingBuffer<Item> {    private Item[] item;    private int read;    private int write;    public RingBuffer(int cap)    {        item = (Item[])(new Object[cap]);        write = 0;        read = 0;    }    public boolean isEmpty()    {        return write == read;    }    public boolean isFull()    {        return write < read;    }    public int size()    {        return item.length;    }    public void put(Item data)    {        if (!isFull())            read = write;        item[write] = data;        write = ++write % size();    }    public Item get()    {        if (isEmpty())            return null;        Item ret = item[read];        write = read;        item[read--] = null;        return ret;    }}

main.java

import edu.princeton.cs.algs4.StdOut;public class Main {    public static void main(String[] args)    {        RingBuffer<Integer> rb = new RingBuffer<Integer>(5);        for (int i = 0; i < 5; ++i)            rb.put(i);        for (int i = 5; i < 7; ++i)            rb.put(i);        for (int i = 0; i < 5; ++i)            StdOut.print(rb.get() + " ");    }}

运行结果:

这里写图片描述