题目如下:
一开始Rear,Front一直加,然后观看了许多人的代码才知道了标准写法
//循环队列的标准写法,注意这是一个循环队列,下面这样写使得Rear和Front一直在0-MaxSize
bool Push(ElementType X, Deque D) {
if ((D->Rear + 1) % (D->MaxSize) == D->Front) return false;//满了就false,+1可能大于最大值所以要整除
D->Front = (D->Front - 1 + D->MaxSize) % D->MaxSize;//-1可能会变成负数所以要加一个MaxSize,都考虑了数组的边界
D->Data[D->Front] = X;
return true;
};
ElementType Pop(Deque D) {
if (D->Rear == D->Front) return ERROR;//为空就ERROR
int x;
x = D->Data[D->Front];
D->Front = (D->Front + 1) % D->MaxSize;
return x;
};
bool Inject(ElementType X, Deque D) {
if ((D->Rear + 1) % (D->MaxSize) == D->Front) return false;
D->Data[D->Rear] = X;
D->Rear = (D->Rear + 1) % D->MaxSize;
return true;
};
ElementType Eject(Deque D) {
if (D->Rear == D->Front) return ERROR;
D->Rear = (D->Rear - 1 + D->MaxSize) % D->MaxSize;
return D->Data[D->Rear];
};
写完后,样例测试说我运行超时,但提交了答案正确,我不李姐