長い1次元配列にランレングス圧縮をかける際の大まかな流れです
配列の長さを調べる
カウンタ変数に0を代入する
cに0を代入する
配列の数値を取得する、この数値はデータとして記憶しておく
☆
カウンタ変数を1だけ大きくする
配列の数値を取得する、これがデータと同じなら、cの値を1だけ大きくする、同じでなければ、フラグを立てる
フラグが立っていれば、フラグを折り、データを出力する。このときcの値が1以上であれば、もう一回データを出力し、cの値を出力し、cに0を代入する。最後に、データの値を新しく上書きする
☆まで戻って繰り返す、カウンタ変数が配列の長さと一致したら、繰り返しを抜ける
出力されたデータを保存する。これが圧縮データになる
私もよく分かってないので、全く違う流れでランレングス圧縮ができることもあるかもしれません