解题代码
bool Push(ElementType X, Deque D) {
if ((D->Rear + 1) % D->MaxSize == D->Front) return false;
else {
D->Front = (D->Front - 1 + D->MaxSize) % D->MaxSize;
D->Data[D->Front] = X;
return true;
}
}
ElementType Pop(Deque D) {
if (D->Rear == D->Front) return ERROR;
else {
D->Front = (D->Front + 1) % D->MaxSize;
return D->Data[(D->Front - 1 + D->MaxSize) % D->MaxSize];
}
}
bool Inject(ElementType X, Deque D) {
if ((D->Rear + 1) % D->MaxSize == D->Front) return false;
else {
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;
else {
D->Rear = (D->Rear - 1+D->MaxSize) % D->MaxSize;
return D->Data[D->Rear];
}
}
测试结果
问题整理
1.注意这是一个循环队列。
2.front指向第一个元素,rear指向最后一个元素的下一个位置,目的是使元素不出现断层。
3.注意对正数取余。