SDUT2131数据结构实验之栈一:进制转换(栈)

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

Time Limit: 1000MS Memory limit: 65536K

题目描述

输入一个十进制整数,将其转换成对应的R(2<=R<=9)进制数,并输出。

输入

第一行输入需要转换的十进制数;
第二行输入R。

输出

输出转换所得的R进制数。

示例输入

1279
8

示例输出

2377

 #include <stdio.h>
 #include <stdlib.h>
 #define STACK_INIT_SIZE 100
 #define STACKINCREMENT 10//存储空间分配增量;
 typedef int ElemType;
 typedef struct
 {
     ElemType *base;
     ElemType *top;
     int stacksize;
 }SqStack;
 int InitStack(SqStack &S)//建立空栈;
 {
     S.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
     if(!S.base) exit(-1);//存储分配失败;
     S.top=S.base;
     S.stacksize=STACK_INIT_SIZE;
     return 1;
 }
 int Push(SqStack &S,ElemType e)
 {
     //栈满,追加栈;
     if(S.top-S.base>=S.stacksize)
     {
         S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
         if(!S.base) exit(-1);//分配失败;
         S.top=S.base+S.stacksize;
         S.stacksize+=STACKINCREMENT;
     }
     *S.top++=e;
     return 1;
 }
 int Pop(SqStack &S,ElemType &e)
 {
     if(S.top==S.base) return 0;
     e=*--S.top;
     return 1;
 }
 int StackEmpty(SqStack &S)
 {
     if(S.top==S.base) return 0;
     else return 1;
 }
 int main()
 {
     int num,ss,e;
     while(~scanf("%d %d",&num,&ss))
     {
         SqStack S;
         InitStack(S);
         while(num)
         {
             Push(S,num%ss);
             num/=ss;
         }
         while(StackEmpty(S))
         {
             Pop(S,e);
             printf("%d",e);
         }
     }
 }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值