zoukankan      html  css  js  c++  java
  • Algs4-1.3.39环形缓冲区

    1.3.39环形缓冲区。环形缓冲区,又称环形队列,是一种定长为N的先进先出的数据结构。它在进程间的异步数据传输或记录日志文件时十分有用。当缓冲区为空时,消费者会在数据存入缓冲区前等待;当缓冲区满时,生产者会等待将数据存入缓冲区。为RingBuffer设计一份API并用(回环)数组将其实现。
    答:
    import java.util.Iterator;
    public class RingBuffer<Item> implements Iterable<Item>
    {
       private Item[] a;
       private int N;
       private int left;
       private int right;
     
        public RingBuffer(int arraryLength)
        {
            a=(Item[]) new Object[arraryLength];
            left=0;
            right=0;
            N=0;
        }
      
        public boolean isEmpty()
        {return N==0;}
       
        public boolean isFull()
        {return N==a.length;}
      
        public int size()
        {return N;}
      
      
        public void enqueue(Item item)
        {
           if(isFull()) return;
            right++;
            if(right==a.length) right=0;
            a[right]=item;
            if(isEmpty()) left=right;
            N++;
        }
      
        public Item dequeue()
        {
            Item item;
           if(isEmpty())
           {
               item=null;
           }
           else if(size()==1)
           {
               item=a[left];
               N--;
           }
           else
           {
               item=a[left];
               left++;
               if(left==a.length) left=0;
               N--;
           }
            return item;
        }
          

        public Iterator<Item> iterator()  {return new ListIterator();}
      
        private class ListIterator implements Iterator<Item>
        {
            private int current=left;
            public boolean hasNext(){return current!=right+1;}
            public void remove(){}
            public Item next()
            {
                Item item=a[current];
                current++;
                if(current==a.length) current=0;
                return item;
            }//end next
          }//end class ListIterator
    }//end class

  • 相关阅读:
    postman 调试接口报“401 身份认证信息未提供”错误
    UserWarning: XXX is writable by group/others and vulnerable to attack when used with get_resource_filename.
    以root权限执行python时候脚本时候报错“ExtractionError: Can't extract file(s) to egg cache”
    django接口调试示例说明
    查看linux系统版本、内存、CPU、存储容量
    一次批量杀死多个进程
    bash:pybot未找到命令
    Swoft-Api项目部署九:前、后置中间件
    Swoft-Api项目部署八:主从数据库配置
    Swoft-Api项目部署七:验证器
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854323.html
Copyright © 2011-2022 走看看