「12行目」で記述エラーを発見しました。
「;」を付け忘れています。
というエラーがでてきます。見直しても付け忘れがないので、どこが間違っているのでしょうか?
このような問題です↓
配列Val、Lp、Rpで構成されるヒープがある。この3つの配列で表現されるヒープから幅優先探索でノードの値を取り出しヒープを表現する配列Hを作成するプログラムを作れ。
データ格納例は次のようになっている。
Val,Lp,Rp
[0] 40,4,-1
[1] -1,-1,-1
[2] 90,6,0
[3] 50,-1,-1
[4] 30,-1,-1
[5] 10,-1,-1
[6] 60,5,3
幅優先探索にてノード値を取り出すため、作業用として十分な幅のある配列Qを用意。
配列Q [1][2][3][4][5][6][7][8]・・・
配列Hには根をH[1]、Hの左の子を[ix2]、右の子を[ix2+1]に格納してヒープを表現。
配列Hには処理に十分な大きさがあり、未使用要素には(-1)が格納されています。ヒープを配列Hに格納した実行結果は
配列H 「-1 90 40 10 50 30 -1 -1 ・・・」です。
#include <stdio.h>
#define MAX 7
void junkai(void);
void soeji_hozon(void);
void saihensei(void);
typedef struct {
int Val,Lp,Rp;}
H[MAX]={
{40,4,-1},{-1,-1,-1},
{90,6,0},{50,-1,-1},
{30,-1,-1},{10,-1,-1},
{60,5,3}};
int Root=2;
int Q[7],Hp,Tp,I,J;
int main(void){
Q[7]=Root;
Hp=0,Tp=0;
while(Hp<=Tp) junkai();
I=Root+1;
H[I]=H[I].Val;
saihensei();
Root++;
for(I=0;I<10;I++)
printf("H[%d]:%d\n",I,H[I]);
printf("Root=%d",Root);
return 0;
}