数据结构利用顺序栈进行进制转换,可以实现以下功能
(没有单独界面,只用控制台做了简单的菜单
入栈
int PUSH(seqstack*s,datatype x)
{
if(s->top==MAX){
printf("overflow!");
return 0;
}
s->data[s->top]=x;
s->top++;
return 1;
}
出栈
int POP(seqstack*s)
{
datatype x;
if((s->top)==0){
printf("Stack is empty!n");
return 0;
}
(s->top)--;
x=s->data[s->top];
return (x);
}
举一些简单的例子,比如十转二
int my10_2(int x)
{
seqstack *SS;
int y;
SS=(seqstack *)malloc(sizeof(seqstack));
SS->top=0;
while(x){
PUSH(SS,x%2);
x/=2;
}
while((SS->top)>0){
y=POP(SS);
printf("%d",y);
}
printf("n");
return y;
}
转十六的因为有字母所以稍微麻烦点(列下我的代码大家可以参考一下思路
int my10_16(int x)
{
seqstack *SS;
int y;
SS=(seqstack *)malloc(sizeof(seqstack));
SS->top=0;
while(x){
PUSH(SS,x%16);
x/=16;
}
while((SS->top)>0){
y=POP(SS);
if(y<10)
printf("%d",y);
else printf("%c",y+55);
}
printf("n");
return y+55;
}
八进制和其他的也大致都是一个思路 ,其实整体还是蛮简单的 ,剩下的代码我就不列了
本人代码小小小白(真的很菜学不懂的那种)总之总之,希望能帮上大家趴QAQ
源代码:(18条消息) C语言数据结构顺序栈——进制转换-C文档类资源-CSDN文库



