数据结构:进制转换
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;
}