Succede perché memorizzi il valore ASCII delle cifre e non quello effettivo. Devi scrivere

push(ch-'0');