【问题标题】:Implementing a Queue in a Circular Array在循环数组中实现队列
【发布时间】:2014-10-22 09:27:19
【问题描述】:

假设我有一个长度为 4 的数组,我想将一些字符入队和出队。如果没有足够的“空格”来添加操作的下一个字符会怎样?

例如:

(1) 将字符 B、N、R 依次排入队列

index 0   index 1    index 2   index 3  --------Here front index = 0 and size = 3
 B           N          R     

(2)出列两个字符

index 0   index 1    index 2   index 3  ------Now the front index = 2 and size = 1
                       R    

(3) 按 P、O、A、W 的顺序排列字符

index 0   index 1    index 2   index 3  
 O          A          R         P

所以我的问题是:如果没有更多空间可以“使用”,为什么字符 W 会发生这种情况?

【问题讨论】:

    标签: arrays queue


    【解决方案1】:

    没有简单的答案,这是循环缓冲区的缺点。根据实施情况,您可以采取多种措施来管理这种情况:

    1) 阻塞调用并等待有空间(假设是多线程环境)

    2) 返回某种错误代码或抛出异常

    3) 调整缓冲区大小并更新两个指针(与添加/删除相比,这将是一项昂贵的操作)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-30
      • 2014-01-04
      • 1970-01-01
      • 2012-09-27
      • 2022-01-19
      • 2017-07-17
      • 1970-01-01
      相关资源
      最近更新 更多