대기열에서 대기열에 넣기 및 대기열에 넣기 기능을 사용하여 대기열을 되돌리려면 어떻게해야합니까?C 역방향 대기열
대기열을 되돌리려면 2 개의 대기열을 사용해야합니까?
void reverse(Queue *q)
{
Queue *new_q = (Queue*) malloc(sizeof(Queue));
new_q->ll.head = NULL;
new_q->ll.size = 0;
ListNode *pLast;
while(!isEmptyQueue(q)){
pLast = q->ll.tail;
while(q->ll.head != pLast){
dequeue(q);
enqueue(q, q->ll.head->item);
}
dequeue(q);
enqueue(new_q, q->ll.head->item);
}
while(!isEmptyQueue(new_q))
{
dequeue(new_q);
enqueue(q, q->ll.head->item);
}
free(new_q);
}
재귀는 친구입니다. – SMA
'stack '을 사용하여'queue'를 뒤집을 수 있습니다. –