推送到排序队列实现
Pushing Into a Sorted Queue Implementation
我正在尝试实现一种方法,无论数据插入队列的顺序如何,它都会被排序。例如,我的主要内容是测试该方法:
OrderedQueue ordQueue;
ordQueue.push(2);
ordQueue.push(1);
ordQueue.push(3);
ordQueue.display();
它应该输出:1、2、3。 但是我的推送方法有问题。我应该如何组织数据?
void OrderedQueue::push(int item)
{
if (IsEmpty())
front = rear = new ListQueueNode(item);
else
{
ListQueueNode *here = front;
ListQueueNode *ptr = rear->next = new ListQueueNode(item);
while (here!=NULL){
if (item < here->value){
front->next = front;
front = ptr;
}
else if (item > here->value){
rear = ptr;
}
here = here->next;
}
}
count++;
}
我认为
你应该清楚推动情况:
- 新元素作为第一项被推送到队列
- 其他
所以你应该改变你的代码:
void OrderedQueue::push(int item)
{
if (IsEmpty())
front = rear = new ListQueueNode(item);
else
{
ListQueueNode here = front;
ListQueueNode prev = NULL;
ListQueueNode ptr = new ListQueueNode(item);
while (here != NULL && item < here.value) {
prev = here;
here = here.next;
}
if (prev == NULL) { // push new element as the first item
ptr.next = front;
front = ptr;
} else { // other
prev.next = ptr;
ptr.next = here;
}
}
count++;
}
遵循以下代码:后面在队列中包含最小值,前面在队列中包含最大值。您可以更改item > here.value
以更改队列的顺序。
相关文章:
- C++数组队列实现方法错误
- 使用 std::forward_list 返回错误的队列实现
- ARM 上的无锁 SPSC 队列实现
- 无锁队列实现中的虚假下溢C++
- 优先级队列实现为单一链接,无法更新插入的指针转换
- 队列实现C++
- 队列实现,带有C 中的链接列表
- 另一个线程安全队列实现
- C++ 链接列表队列实现和析构函数错误:"Aborted (Core Dumped)"
- 未解决的外部符号,具有自定义阻塞队列实现
- 优先级队列实现说明
- 推送到排序队列实现
- 多路优先级队列实现
- 在C++中检查队列实现时出错
- 队列实现出现Malloc指针错误
- 程序员对优先级队列实现的默认选择是什么?
- c++静态分配双端队列实现
- 队列实现失去了对头节点的跟踪
- 阻塞队列实现:争用条件在哪里?
- c++队列实现错误