算法分配的排队问题

时间:2019-02-26 04:30:42

标签: algorithm queue pseudocode

我正在尝试解决这个问题,

'为算法isQSimilar(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 :(得分:2)

您不需要检查后部元素。我假设front()仅窥视前面的元素而不删除,而deleteQueue()从队列中删除前面的元素

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

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

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

答案 1 :(得分:0)

您可以直接从“队列”中删除元素,并在以后添加它们(如果它们相同)。

result = [[sum(record[0] for record in records), grpname] for grpname, records in groups]