Larbin:Fifo.h 的学习

 Fifo.h
    作用:建立一个非同步的标准队列的数据结构,实现队列的基本操作。(入队、出队、是否为空、队列长度)
    实现:
          基本实现:通过模板类实现;用T ** tab 存储实际元素,in,out做两个指针,size存储空间大小(不是队列大小),是个循环队列。
          动态扩展循环队列的长度:队列的初始长度为maxUrlsBySite(40),在构造函数中使用。当队列长度不够时(在入队中判断),将队列长度变为原来的两倍,将原来的数值拷贝过去。删除原tab,参见代码: void Fifo<T>::put (T *obj)。这种方法在标准模板库的vector容器的设计中也使用到。                      
          求循环队列的长度:(in-out+size)%size。这里处理的很巧妙。参见代码:int Fifo<T>::getLength ()

 


                          如果in在后,out在前,则length=in-out;(配图1)
                          如果in在前,out在后,则length=in+size-out;(配图2)


                          这里统一用了(in+size-out)%size

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值