C++ 检查队列是否已满
C++ Check if a Queue is FULL?
void enqueue(int val){
if (Queue is full, do this){
//... What should I write here? ...
}else{
if(empty()){
r = f = 0;
}else{
r++;
int arr_length = (sizeof(arr)/sizeof(arr[0])) - 1;
if(r == arr_length)
r = 0;
}
arr[r] = val;
}
}
我的问题:队列中将有 2 个指针。指向队列后方的指针 R。指向队列前面的指针 F。从队列中删除元素时,队列中的第一个元素将被删除,因此,F = F-1;当将新元素添加到队列中时,它将被添加到队列中的最后一个位置,因此 R = R+1。
假设我声明一个固定的数组大小为 5。R 和 F 可以在队列(圆形数组(中扭曲。如何检查队列是否已满?
我想到检查队列是否已满:
情况 1 - 当 F 指向数组第一个元素而 R 指向 数组最后一个元素 = 队列已满。
情况 2:当 F - 1 = R 时。然后队列已满。
我的逻辑正确吗?如何在编码中实现?
您的队列已满检查适用于:
Case 1 - When F is pointing at array first element & R is pointing at array last element = Queue is full.
Case 2: When F - 1 = R. Then Queue is full.
满员后,无法排队因此,如果您无法排队(已满(,最好是作为书返回,返回 false,否则返回 true,即如果可以排队。这将有助于呼叫者排队或取消排队
或者,您可以使用 std::queue 或 std::array
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 堆栈和队列是否像C++中的数组一样传递?
- Vulkan 的传输队列系列功能和显卡支持:条件检查是否准确?
- 是否可以使用简单队列创建优先级队列
- 是否有一种有效的方法来搜索队列中的关键字并覆盖其值
- 如何检查队列是否使用 STL 排序
- 如何检查提升消息队列是否存在
- 如何查看Tibco EMS独享队列是否有活跃消费者?
- 弹出后,C++队列是否会销毁对象?
- 是否可以更改在优先级队列中添加具有相同优先级的"side"对象?
- 是否使用示波器队列:: swap违反任何规则来清空std ::队列
- 可以检查提升::无锁::队列是否已满吗?
- 使用无锁指针队列在线程之间移动数据是否安全
- stl 优先级队列中的堆管理是否调用复制构造函数
- 在 C++11 中,lambda 队列是否是工作队列的良好设计模式
- 提升优先级队列,查看元素是否已在队列中
- Boost 的无锁队列是否有可能丢失元素?
- 来自另一个线程的 SendMessage() 调用是否将消息发布到消息队列
- C++ A-star 实现 -- 确定节点是否已在打开项目的优先级队列中
- 使用CL_MEM_USE_HOST_PTR时是否需要将读/写排入队列