数据结构与算法实现进制转换
时间: 2023-11-23 19:08:19 浏览: 99
制转换是指将一个数从一种进制表示转换为另一种进制表示的过程。下面是一个使用栈实现十进制转换为二进制的示例代码:
```c
#include <stdlib.h>
#include <stdio.h>
#define Max 100
//定义顺序栈结构
typedef struct{
int data[Max];
int top;
}SeqStack;
//建立空栈
SeqStack *initStack() {
SeqStack *S=(SeqStack*)malloc(sizeof(SeqStack));
if(S==NULL) return NULL;
S->top=-1;
return S;
}
//入栈
int push_stack(SeqStack *S,int x) {
if(S->top+1==Max) return 0;
S->top++;
S->data[S->top]=x;
return 1;
}
//出栈
int pop_stack(SeqStack *S,int *x) {
if(S->top==-1) return 0;
*x=S->data[S->top];
S->top--;
return 1;
}
int main() {
int x,a;
printf("Enter x:");
scanf("%d",&x);
SeqStack *S=initStack();
while(x!=0) {
push_stack(S,x%2);
x=x/2;
}
while(S->top!=-1) {
pop_stack(S,&a);
printf("%d",a);
}
return 0;
}
```
该代码使用了顺序栈来实现进制转换,将十进制数不断除以目标进制,将余数入栈,最后依次出栈即可得到转换后的结果。
阅读全文