2 qq 15699467 qq_15699467 于 2016.04.19 19:08 提问

C++ 队列操作,新人小白,在线等,挺急的

已知4只队列,如何选中其中最短的队列,进行后续操作?
求大神,讲下思路和代码,要求是原队列进行后续操作

5个回答

qq_15699467
qq_15699467   2016.04.21 08:54
已采纳

BankQueue CompareS(BankQueue Q[4])//找出最短队列
{
int i;
i=Q[0].rear-Q[0].front <= Q[1].rear-Q[1].front ? 0 : 1 ;
i=Q[i].rear-Q[i].front <= Q[2].rear-Q[2].front ? i : 2 ;
return Q[i].rear-Q[i].front<= Q[3].rear-Q[3].front ? Q[i] : Q[3] ;
}

caozhy
caozhy   Ds   Rxr 2016.04.19 19:12
 看你的队列怎么实现的。
假设队列得到长度的函数为length,那么代码如下:
Queue q[] = { q1, q2, q3, q4 };
Queue qmin = q1;
for (int i = 1; i < 4; i++)
if (qmin.length() > q[i].length()) qmin = q[i];
qq_15699467
qq_15699467 回复注定随风: 这样,后续操作还是有问题, NK_test 很有想法,看看他说的
一年多之前 回复
qq_15699467
qq_15699467 回复注定随风: 这样,后续操作还是有问题, NK_test 很有想法,看看他说的
一年多之前 回复
zhudingsuifeng
zhudingsuifeng 回复扯淡动物: 你可以根据队列中的元素多少,对4个队列进行一个排序,元素最少的用q1表示,元素最多的用q4表示
一年多之前 回复
qq_15699467
qq_15699467 但是你这后面后续操作就变成qmin,我是要在循环中加入一句话,使得后续操作(本来是对q[i]操作,结果来个qmin)不受影响(我在做模拟银行队列,所以想问一下能否使后续操作不受影响)
一年多之前 回复
webcqsec
webcqsec   2016.04.20 17:10

Queue * qs=new Queue[4];
Queue * q=&(qs[0]);

for( int i=1;i {
if(q->length() > qs[i].length())
q=&(qi[i]);
}

// 后面使用 q 指针即可。

qq_15699467
qq_15699467 可以
一年多之前 回复
webcqsec
webcqsec   2016.04.20 17:15

代码怎么少了一部分!!!

Queue * qs=new Queue[4];
Queue * q=&(qs[0]);

for( int i=1;i {
if(q->length() > qs[i].length())
q=&(qi[i]);
}

// 后面使用 q 指针即可。

NK_test
NK_test   Rxr 2016.04.19 23:50

蛮简单嘛,你min不要记录queue,记录下标就可以了呀。最后按照下标取出原来的queue后续操作即可。手机码字,就不写代码了。

qq_15699467
qq_15699467 可以可以
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!