You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环队列插入异常:插入第2个元素时误报队列已满(数组大小5)

解决你的循环队列插入问题

兄弟,我一眼就瞅出你代码里的两个关键问题,正是它们导致你插入第一个元素后就触发“队列已满”的错误提示:

1. 条件判断里的赋值运算符误用

你看insert函数里的这个判断:

if(front=rear+1 || SIZE==rear+1)

这里的front=rear+1是赋值操作(用了=),而不是你想要的比较操作(应该用==)。每次执行这个判断时,程序会把rear+1的值赋给front,然后判断这个赋值结果是否为真(非零即真)。

插入第一个元素后,rear的值是0,这时候front被赋值为1,这个值非零,所以整个if条件直接成立,就会打印“队列已满”的提示,根本不会执行后面的插入逻辑。

2. 循环队列满的判断逻辑错误

原代码的满队列判断逻辑完全不符合循环队列的特性。循环队列的核心是利用取模运算实现“循环”,正确的满队列判断条件应该是:

(rear + 1) % SIZE == front

这个条件的意思是:当rear的下一个位置就是front时,队列已经满了(循环队列通常会预留一个空位置来区分“满”和“空”的状态,避免和初始空队列的front == rear混淆)。

原代码里的SIZE==rear+1只考虑了rear走到数组末尾的情况,没有考虑循环回到数组开头的场景,而且结合前面的赋值错误,直接导致了错误触发。

修正后的完整代码

#include<stdio.h>
#include<stdlib.h>
#define SIZE 5
int cqueue[SIZE];
int front = -1;
int rear = -1;
void insert(int);
void main() {
    int ch,item;
    while(1) {
        printf("\n select choice from given below operations of circular queue : ");
        printf("\n 1.insert element");
        printf("\n 2. delete element");
        printf("\n 3. display elements");
        printf("\n 4. exit");
        printf("\n enter choice : ");
        scanf("%d",&ch);
        switch(ch) {
            case 1 : printf("enter element : ");
                     scanf("%d",&item);
                     insert(item);
                     break;
            case 4 : exit(0);
            default: printf("\ninvalid choice! enter again\n");
        }
    }
}
void insert(int ele) {
    // 修正满队列判断条件,把=改成==,并用取模实现循环判断
    if((rear + 1) % SIZE == front) {
        printf("\n circular queue is full ");
    }
    else if((rear==-1)&&(front==-1)) {
        front=rear=0;
        cqueue[rear]=ele;
    }
    else if(rear==SIZE-1) {
        rear=0;
        cqueue[rear]=ele;
    }
    else {
        rear++;
        cqueue[rear]=ele;
    }
}

测试验证

  • 插入第一个元素:front和rear都设为0,(0+1)%5=1 !=0,不会触发满队列提示。
  • 插入第二个元素:rear变为1,(1+1)%5=2 !=0,正常插入。
  • 直到插入第5个元素后,rear是4,(4+1)%5=0 == front(此时front还是0),才会提示队列已满,这符合循环队列的预期行为。

内容的提问来源于stack exchange,提问作者Tushar Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:13:33