我写了一个函数来交换在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_。 –