Я помещаю игру в эту очередь, для игры «припаркованной машины», и она должна выйти с 75 ходами для решения головоломки. Тем не менее, очередь продолжает переполняться, что приводит к тому, что перемещение не помещается в очередь, что делает решение более чем на 75 ходов. Примечание. Невозможно изменить размер очереди, он является постоянным. Есть идеи?Backtracing Queue
int enqueue(position* p){
Q[qrear] = p;
qrear = qrear + 1;
if (qrear == QueueArraySize) {
qrear = 0;
}
qsize = qsize + 1;
return 0;
} /*End of insert()*/
position* dequeue(){
if (qsize == 0) {
printf("Queue Underflow \n");
return NULL;
}
else {
position* temp = Q[qfront];
qfront = qfront + 1;
if (qfront == QueueArraySize) {
qfront = 0;
}
qsize = qsize - 1;
return temp;
}
}
как вы инициализируете Q? – koper89
И я бы предложил передать структуру Q в этих функциях, используя глобальные переменные - не слишком хорошая идея. структура, которая содержит размер, задний, передний и размер. И вы должны поместить NULL в Q [qfront] после того, как вы перейдете к temp. – koper89
@ koper89 position * Q [QueueArraySize]; –