>stack_node stack[STACK_SIZE]が溢れますね。


これは指定の番号のデータが、ソート結果として
第何番目になるかを出力させるといい。

つまり順番に数値を格納した配列を用意して
その要素をクイックソートの置き換え処理の対象にさせる。
また、比較関数もこれに対応したものを用意する。

この方式なら
int stack[STACK_SIZE]
を用意すればいいので、件数は多くても
メモリ消費量はそんなに必要にならない。