首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言入門

C語言棧實現進制轉換:後進先出特性完美匹配除基取餘逆序輸出

     編輯:C 語言入門

原理

十進制轉 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]); }

總結

棧解決進制轉換是「數據結構服務於演算法」的教科書級例子。理解遞歸本質是系統棧,手寫棧等價於將遞歸轉為迭代,避免棧溢出,且可控制內存佈局。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved