private ArrayQueue<E> merge( ArrayQueue<E> q1, ArrayQueue<E> q2 ) throws ArrayQueueException
{
ArrayQueue<E> mergeQueue = new ArrayQueue<E>( q1.size() + q2.size() );
ArrayQueue<E> smallestQueue = smallestQueue( q1, q2 );
ArrayQueue<E> biggestQueue = biggestQueue( q1, q2 );
for ( int index = 0; index < smallestQueue.size(); index++ )
{
E elementOne = smallestQueue.dequeue();
E elementTwo = biggestQueue.dequeue();
if ( elementOne.compareTo( elementTwo ) < 0 )
{
mergeQueue.enqueue( elementOne );
mergeQueue.enqueue( elementTwo );
}
else
{
mergeQueue.enqueue( elementTwo );
mergeQueue.enqueue( elementOne );
}
}
for ( int index = 0; index < biggestQueue.size(); index++ )
{
mergeQueue.enqueue( biggestQueue.dequeue() );
}
return ( mergeQueue );
}
Я занимался упражнением, которое включает создание метода для объединения двух очередей.Моя попытка выше работает, когда обе очереди имеют одинаковый размер, но в противном случае это неправильно.
Каков наилучший способ реализовать это?
Спасибо.