我正在實施堆排序以進行作業。我們必須按照她在課堂上使用她的僞代碼的方式來做,否則我們不會得到信任。堆排序錯誤:表達式必須是指向完整對象類型的指針?
在我Max_Heapify功能,即時得到一個錯誤,當我把我的左()和右()函數,即說:「表達式必須是一個指向一個完整的對象類型」。我直接關閉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;
}
............................................ ................................................
下面是左()和右()函數,如果它有助於在所有
int Left(int i)
{
return (2*i);
}
int Right(int i)
{
return ((2*i)+1);
}
@Mike Gordon您也可以刪除heapsort標記,因爲這不是算法相關的,您可以添加函數調用標記 – 4pie0 2013-03-17 23:03:15