我试图在不使用数组的情况下在两个队列上实现“插入排序”。
队列1 - 4,5,11,8,3
队列2 - 2,3,4,5,2,1
排序后如下:
队列1 - 3,4,5,8,11
队列2 - 2,2,3,4,5,1
他们被排序。但我把队列排序就好像它是一个列表。我不知道如何处理FIFO结构。
我的老师说如果是列表,我的实现是好的,但不是队列。我应该使用push()
和pop()
函数(已经实现它们)和第三个队列来获取帮助。这是我目前对排序算法的实现:
void InsertionSort(queue* &left, queue* &right)
{
int x, i = 0, j;
queue *p = left;
while (p)
{
x = getElemAt(i, left, right);
j = i - 1;
while (j >= 0 && x < getElemAt(j, left, right))
{
setElemAt(j + 1, getElemAt(j, left, right), left, right);
j--;
}
setElemAt(j + 1, x, left, right);
p = p->next;
i++;
}
}
getElemAt
和setElemAt
是我单独编写的附加功能。我该如何解决使用额外队列排序的问题?
答案 0 :(得分:0)
@interjay队列需要单独排序,使用第3个辅助队列,队列在队列1或队列2时使用。队列不能同时排序,因为这将需要2个辅助队列