数据结构实验之栈与队列一:进制转换


    #include <stdio.h>
    #include <malloc.h>
    #define MAX 100000

    typedef struct
    {
        int *base;
        int *top;
    } stack;

    void Init(stack *S)//创建栈
    {
        S->base = (int *)malloc(MAX * sizeof(int));
        S->top = S->base;
    }

    void Push(stack *S, int e)//入栈
    {
        *(S->top++) = e;
    }

    void Pop(stack *S)//出栈
    {
        S->top--;
    }

    int Gettop(stack *S)//返回栈顶值
    {
        return *(S->top-1);
    }

    int Empty(stack *S)//判栈空
    {
        if(S->base == S->top)
            return 1;
        else
            return 0;
    }

    void Transfer(stack *S,int n,int R,int flag)//进制转换
    {
        if(n == 0)
            flag = 1;
        while(n != 0)
        {
            Push(S,n%R);
            n /= R;
        }
        if(flag)
            printf("0");
        while(!Empty(S))//输出
        {
            printf("%d",Gettop(S));
            Pop(S);
        }
    }

    int main()//主函数
    {
        int n,R,flag = 0;
        stack S;
        Init(&S);
        scanf("%d %d",&n,&R);
        Transfer(&S,n,R,flag);
        return 0;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值