【发布时间】:2018-10-14 01:59:03
【问题描述】:
我正在尝试为主队列实现插入、查找最小值和删除最小值函数。我还通过与另一个队列一起检查来确保我的代码正常工作的测试。出于某种原因,当使用 find minimum 和 delete minimum 函数时,它会带有来自另一个队列的不同值。我该如何解决这个问题?
#include "pQueue.h"
#include <iostream>
using namespace tom;
status pQueue::insert(int insertInt)
{
if (q[0] == NULL)
{
q[0] = insertInt;
minimum = insertInt;
}
else if (q[0] != NULL)
{
q[count] = insertInt;
}
else
{
return FAILURE;
}
if (insertInt < minimum)
{
minimum = insertInt;
}
return SUCCESS;
count++;
}
status pQueue::findMin(int &minElement)
{
minElement = minimum;
if (minElement == NULL)
{
return FAILURE;
}
return SUCCESS;
}
status pQueue::deleteMin()
{
for (int i = 0; i <= count; i++)
{
if (q[i] = minimum)
{
q[i] = 0;
}
if (q[i] != 0)
{
return FAILURE;
}
}
}
【问题讨论】:
-
这段代码有很多问题,其中最明显的是
count永远不会增加,因为你在它之前返回。那应该给你一个编译器警告。在尝试测试代码之前,您至少应该了解(最好消除)所有编译器警告。
标签: c++ queue priority-queue traversal