#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;
}
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.
解决也很简单,你做一下?
不会啊= =
追答恭喜!
这玩意确实考验人的逻辑,有时候自己就把自己母绕晕了。
不过,一般情况下,队列都不会打印所有元素。