我正在一个处理队列的实验室工作,我认为这并不完全相关。我的任务是创建一个“优先队列”,我能想到的最好方法如下
void IntQueue::enqueue(int num,int priorityOfEntry)
{
if (isFull())
cout << "The queue is full.\n";
else
{
// Calculate the new rear position
//insert correct lab code here haha
if (priorityOfEntry == 1)
{
rear = (rear + 1) % queueSize;
queueArray[rear] = num;
queueSize++;
}
else if (priorityOfEntry == 2)
{
queueSize++;
int* newArray = new int[queueSize];
newArray[0] = num;
for(int counter = 0;counter< queueSize; counter++)
{
newArray[counter+1] = queueArray[counter];
}
queueArray = newArray;
delete [] newArray;
}
else cout << "invalid priority" << endl;
// Insert new item
// Update item count
numItems++;
}
}
我只有 2 个优先级,1 和 2,我在主程序中进行了解释。当它们都具有相同的优先级时,它当然可以正常工作,但是当我提高优先级时,它会在我的析构函数中引发错误。
我真的不认为这是接近这个实验室的正确方法,但它似乎有效.. 至少如果我真的能修复这个内存错误。我认为唯一的问题可能是我更改了析构函数认为它将删除的地址。但我认为指针已经可以解释这一点。我知道我需要学习调试自己的程序。我真的。但有时我只是盯着代码看,那里只有一堵砖墙。猜猜这就是朝着正确方向轻推的目的。