【发布时间】:2017-10-31 15:50:09
【问题描述】:
如何使用 dequeue 和 enqueue 函数反转队列?
是否必须使用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);
}
【问题讨论】:
-
递归是你的朋友。
-
您可以使用
stack来反转queue。
标签: c data-structures queue