编写C++ Queue代码出现大量错误,含未编写行报错求助
问题分析与修复
核心错误根源
你的代码存在**赋值运算符(=)误用作比较运算符(==)**的致命问题,这会彻底打乱程序逻辑,进而触发编译器在系统头文件(如corecrt_wio.h)中抛出异常——错误逻辑导致程序行为异常后,编译器的错误提示可能会关联到底层标准库文件,出现指向未编写代码行的情况。
具体修复点
- 入队函数的满判断:原代码
if (rear = size)是赋值操作,会强制将size的值赋给rear,导致条件永远为真,改为if (rear == size)。 - 出队函数的空判断:原代码
if (front = rear)同样是赋值操作,会直接将队列置为空,改为if (front == rear)。 - 语义修正:出队函数里的提示文本
"the stack is empty"属于语义错误,改为"the queue is empty"避免混淆。
修复后的完整代码
#define size 4 #include <iostream> using namespace std; class queue { int array[size]; int rear; int front; public: queue() { front = 0; rear = 0; } void enqueue(int val); void dequeue(); }; void queue::enqueue(int val) { if (rear == size) { cout << "sorry our queue is full " << endl; } else { array[rear] = val; rear++; } } void queue::dequeue() { if (front == rear) { cout << "the queue is empty" << endl; } else { cout << "our dequeued element is: " << array[front] << endl; front++; } } int main() { queue bro; bro.enqueue(4); bro.enqueue(5); bro.enqueue(3); bro.enqueue(6); bro.dequeue(); bro.dequeue(); bro.dequeue(); bro.dequeue(); // 可添加此行测试空队列提示 }
额外说明
你当前实现的是简单顺序队列,当rear到达size后,即使前面出队腾出空间也无法再入队。若要实现可复用空间的循环队列,可将满判断改为(rear + 1) % size == front,同时调整入队出队的索引计算逻辑。
内容的提问来源于stack exchange,提问作者Henok Mulugeta
相关产品推荐
相关产品推荐

