c++ 求大神帮我改下队列让它能实现入队和出队操作并能输出它们

#include<iostream>
using namespace std;
class Cqueue
{
private:
int *elem;
int rear;
int front;
int maxsize;
public:
Cqueue()
{
maxsize=5;
rear=front=0;
elem=0;

}
int enQueue(int x)
{
Cqueue q;
if((q.rear+1)%q.maxsize==q.front)
return 0;
q.elem[q.rear]=x;
q.rear=(q.rear+1)%q.maxsize;
}
int deQueue(int e)
{
Cqueue q;
if(q.front=q.rear)
return 0;
e=q.elem[q.front];
q.front=(q.front+1)%q.maxsize;
return 1;
}
void dispQueue()
{
Cqueue q;
for (int i=q.front;i<q.rear;i++)
{
cout<<q.elem[i];
}
cout<<endl;
}

};
int main()
{
Cqueue q;
q.enQueue(1);
q.enQueue(2);
q.enQueue(3);
q.dispQueue();
int e;
q.deQueue(e);
q.dispQueue();
return 0;
}

前两天刚帮别人改成java代码

#include<iostream>
using namespace std;
class Cqueue
{
private:
int *elem;
int rear;
int front;
int maxsize;
public:
Cqueue(int maxSize=5)
{
maxsize=maxSize;
rear=front=0;
elem=new int(maxSize * sizeof(int));
}
void enQueue(int x)
{
if((rear+1)%maxsize==front)
return;
elem[rear]=x;
rear=(rear+1)%maxsize;
}
int deQueue(int e)
{
if(front==rear)
return 0;
e=elem[front];
front=(front+1)%maxsize;
return e;
}
void dispQueue()
{
   cout << "{";
for (int i=front;i<rear;i++) {
cout<<elem[i];
if (i!=(rear-1)) cout << ",";
}
cout<<"}" << endl;
}
    ~Cqueue() {
        delete elem;
    }
};
int main() {
Cqueue q(6);
q.enQueue(1);
q.enQueue(2);
q.enQueue(3);
q.dispQueue();
int e=0;
q.deQueue(e);
q.dispQueue();
return 0;
}

追问

elem=new int(maxSize * sizeof(int));和elem=new int有什么区别呢?

追答

写错了,new int[maxSize * sizeof(int)];
还有 delete []elem;

追问

dispQueue()这还有个问题,如果maxsize是4的话,队列满了,此时出队一个元素,在入队一个元素,也就是front指向1位置,rear指向0位置,这个时候要输出的话front不可能小于rear吧。。

追答

对,所以,目前的dispQueue()有bug.
解决也很简单,你做一下?

追问

不会啊= =

追答

恭喜!
这玩意确实考验人的逻辑,有时候自己就把自己母绕晕了。
不过,一般情况下,队列都不会打印所有元素。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答