栈实现十进制转二进制代码
时间: 2024-06-13 17:03:35 浏览: 97
栈可以很方便地实现十进制转二进制的操作,以下是一个示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct stack {
int Data[MaxSize]; // 存储元素的数组
int Top; //栈顶指针
} SeqStack;
SeqStack* creatstack() {
SeqStack *p = (SeqStack*)malloc(sizeof(SeqStack));
p->Top = -1;
return p;
}
void Push(SeqStack *p,int x) {
p->Top++;
p->Data[p->Top] = x;
}
void convNum(SeqStack *p,int n, int R) {
while (n!=0) {
Push(p,n%R);
n/=R;
}
}
int main() {
SeqStack *s;
s = creatstack();
int x; //原数
int r=2; //要转化的进制数
scanf("%d", &x);
convNum(s,x,r);
while (s->Top!=-1) {
printf("%d", s->Data[s->Top--]);
}
return 0;
}
```
该代码中,我们首先定义了一个栈结构体,包含一个存储元素的数组和一个栈顶指针。然后我们定义了创建栈、入栈、十进制转二进制等函数。在主函数中,我们创建了一个栈,输入原数和要转化的进制数,调用convNum函数将原数转化为二进制数并压入栈中,最后通过出栈操作将二进制数输出。
阅读全文