1474 数据结构:进制转换
原创
©著作权归作者所有:来自51CTO博客作者wx62f49e890a843的原创作品,请联系作者获取转载授权,否则将追究法律责任
数据结构:进制转换
Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte
Description
输入一个十进制整数n,输出它对应的5进制。
要求使用堆栈。
Input
一个十进制整数n。
Output
n对应的5进制形式。
Sample Input
13
Sample Output
23
AC代码:
#include<stdio.h>
#include<cstdlib>
typedef int selemtype;
typedef struct
{
selemtype *base;
selemtype *top;
int stacksize;
}sqstack;
int initstack(sqstack &s)
{
s.base=(selemtype *)malloc(100*sizeof(selemtype));
if(!s.base) return 0;
s.top=s.base;
s.stacksize=100;
return 1;
}
int stackempty(sqstack s)
{
return(s.top==s.base);
}
int pop(sqstack &s,selemtype &e)
{
if(s.top==s.base)return 0;
e=*--s.top;
return 1;
}
int push(sqstack &s,selemtype e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(selemtype *)realloc(s.base,(s.stacksize+10)*sizeof(selemtype));
if(!s.base)exit(-2);
s.top=s.base+s.stacksize;
s.stacksize+=10;
}
*s.top++=e;
return 1;
}
void conver(int n,int p)
{
sqstack s;
int r,e;
initstack(s);
while(n)
{
r=n%p;
n=n/p;
push(s,r);
}
while(s.top!=s.base)
{
pop(s,e);
printf("%d",e);
}
}
int main()
{
int n,p;
scanf("%d",&n);
conver(n,5);
printf("\n");
return 0;
}