Вопрос об очереди для назначения алгоритмов - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь выяснить это,

'Напишите псевдокод для алгоритма isQS Similar (Q1, Q2), чтобы проверить, являются ли две очереди, Q1 и Q2, похожими или нет.(т.е. одинаковые элементы в обеих очередях и одинаковый порядок элементов). В конце сравнения обе очереди должны выглядеть без изменений.Единственными базовыми операциями, которые вы можете использовать в очередях, являются следующие: addQueue (), deleteQueue (), Qsize (), Rear () и Front (). '

Итак, что у меня есть,

isQsimilar(Q1,Q2)

char check1;
char check2;

int n = Q1.Qsize();
int i = Q2.Qsize();

if (n != i)
    return false;
else
    while (n > 0)
    {
        check1 = Q1.front();
        check2 = Q2.front();

        if (check1 != check2)
            return false;

        Q1.deleteQueue(check1);
        Q2.deleteQueue(check2);

        check1 = Q1.rear();
        check2 = Q2.rear();

        Q1.addQueue(check2);
        Q2.addQueue(check2);

        n--;
    }

return true;

Я не уверен, правильно ли я использую операции или что то, что я делаю, является правильным на расстоянииЯ в правильном направлении или я что-то упускаю?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

вы можете напрямую удалять элементы из очередей и добавлять их позже, если они совпадают ..

pseducode:
function isQueuesSame(Q, Q1){
    var size = Q.getSize();
    var size1 = Q1.getSize();

    if(size != size1) return false;
    else{
        while(size--){
            var peek = Q.deleteQueue();
            var peek1 = Q1.deleteQueue();

            if(peek != peek1) return false;

            Q.addQueue(peek);
            Q1.addQueue(peek1);
        }
        return true;
    }
}
0 голосов
/ 26 февраля 2019

Вам не нужно проверять задние элементы.Я предполагаю, что front() смотрит только передние элементы без удаления, а deleteQueue() удаляет передний элемент из очереди

check1 = Q1.front();
check2 = Q2.front();
if (check1 != check2)
    return false;

Q1.deleteQueue();
Q2.deleteQueue();

Q1.addQueue(check1);
Q2.addQueue(check2);
...