十進制轉 N 進制:反覆 num % base 取餘,num /= base,餘數序列逆序即為結果。棧的 LIFO 天然契合。
void convert(SqStack *s, unsigned int n, unsigned int base) {
init(s);
if (n == 0) { push(s, 0); }
while (n) {
push(s, n % base);
n /= base;
}
printf("結果: ");
int d;
while (!empty(s)) { pop(s, &d); printf("%d", d); }
puts("");
}
const char *digits = "0123456789ABCDEF";
while (!empty(s)) { pop(s, &d); putchar(digits[d]); }
棧解決進制轉換是「數據結構服務於演算法」的教科書級例子。理解遞歸本質是系統棧,手寫棧等價於將遞歸轉為迭代,避免棧溢出,且可控制內存佈局。