我寫了一個函數來交換在C隊列的第一個和最後一個元素++如何在C++中交換隊列的第一個和最後一個元素?
void swap(queue Q)
{
queue temp;
createQ (temp);
int x,first,last;
first=dequeue(Q);
while(!isemptyQ(Q))
{
x=dequeue(Q);
last=x;
enqueue(x,temp);
}
enqueue(last,Q);
while(!isemptyQ(temp))
{
x=dequeue(temp);
if(x!=last) enqueue(x,Q); //(if) to avoid adding last element again
}
enqueue(first,Q)
}
注:「只考慮(的isEmpty,出列,createQ和排隊)的其他功能>>(我的第一年)」
但是如果最後一個元素在中間被複制,如果這是隊列元素(5,1,9,3,9) 如果我們在這些元素上跟蹤該函數,它將是(9 ,1,3,5) 有9個失蹤!
所以如果有一個逃避或任何其他想法的功能?!
不檢查值1個或零元素,檢查是否有* *位置(即一個索引)的僞代碼。 –
怎麼樣,使用'std :: deque'或者'std :: swap'。 –
你最好不要在'temp'中放入最後一個元素。從Q出列,然後檢查_isempty_。 –