存在 QQueue<QQueue <T> >的数据结构 ,想让内层QQueue 先出队完成后再出完层,一次内层只能出队一个,如何保证在内层出队一个数据后,内存队列在外层不变
时间: 2024-03-15 21:46:39 浏览: 54
PersistentQueue:将数据持久化到内存映射文件的队列
您可以使用一个辅助队列来实现这个功能。具体实现方法如下:
```
QQueue<QQueue<T>> queue;
QQueue<T> tempQueue;
while (!queue.isEmpty()) {
QQueue<T> innerQueue = queue.dequeue();
while (!innerQueue.isEmpty()) {
T element = innerQueue.dequeue();
// 处理元素
tempQueue.enqueue(element);
}
// 将处理完的内层QQueue重新入队到外层QQueue中
queue.enqueue(innerQueue);
}
// 将处理完的元素重新入队到内层QQueue中
while (!tempQueue.isEmpty()) {
T element = tempQueue.dequeue();
queue.front().enqueue(element);
}
```
在外层while循环中,我们依次取出外层QQueue中的每个内层QQueue,并将其所有元素依次取出处理,并存储到辅助队列中。在内层QQueue所有元素处理完成后,我们将其重新入队到外层QQueue中,保证内层QQueue在外层不变。在处理完所有内层QQueue之后,我们依次将辅助队列中的元素重新入队到内层QQueue中。这样就可以实现先出完内层QQueue再出完外层QQueue的功能,并且保证内层QQueue在外层不变。
阅读全文