我正在为一项任务实施堆排序。我们必须像她在课堂上用她的伪代码那样做,否则我们不会得到荣誉。
在我的 Max_Heapify 函数中,当我调用 Left() 和 Right() 函数时出现错误,即“表达式必须是指向完整对象类型的指针”。我直接离开psedocode,所以我不确定是什么导致了这个错误,有人可以帮忙吗?
void Max_Heapify(int heapArray[],int i)
{
int n = SIZE;
int largest = 0;
int l = Left[i];//<--Error here on Left
int r = Right[i];//<--Error here on Right
if(( l <= n) && (heapArray[l] > heapArray[i]))
{
largest = l;
}
else
{
largest = i;
}
if( (r <= n) && ( heapArray[r] > heapArray[largest]))
{
largest = r;
}
int temp;
if(largest != i)
{
temp = heapArray[i];
heapArray[i] = heapArray[largest];
heapArray[largest] = temp;
Max_Heapify(heapArray,largest);
}
return;
}
..................................................... .........................................................
如果有帮助的话,这里是 Left() 和 Right() 函数
int Left(int i)
{
return (2*i);
}
int Right(int i)
{
return ((2*i)+1);
}