数据结构实践——数制转换(栈)

    xiaoxiao2026-02-24  8

    本文是针对数据结构基础系列网络课程(3):栈和队列的实现项目。

    【项目 - 数制转换】 把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。

    提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……

    [参考解答]

    解法:头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。

    #include <stdio.h> #include "sqstack.h" void MultiBaseOutput (int number,int base) { //假设number是非负的十进制整数,输出等值的base进制数 int i; SqStack *S; InitStack(S); while(number) //从右向左产生base进制的各位数字,并将其进栈 { Push(S,number%base); //将将余数进栈 number/=base; } while(!StackEmpty(S)) //栈非空时退栈输出 { Pop(S, i); printf("%d",i); } } int main() { MultiBaseOutput(10, 2); return 0; }

    注:为实现本项目苈能,请将sqstack.h中的ElemType由char改为int,即

    typedef char ElemType;

    改为:

    typedef int ElemType; 相关资源:数据结构课程设计 数制转换问题
    最新回复(0)