栈实现十进制转二进制
时间: 2023-11-20 16:52:06 浏览: 138
采用静态顺序栈方式实现-数据结构—清华大写严蔚敏
栈可以很好地实现十进制转二进制的功能。具体步骤如下:
1. 定义一个栈结构,用于存储二进制数的每一位。
2. 将十进制数不断除以2,将余数压入栈中,直到商为0为止。
3. 从栈顶开始弹出每一位二进制数,即可得到转换后的二进制数。
以下是C语言代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100
typedef struct {
int top;
int data[STACK_SIZE];
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isEmpty(Stack *s) {
return s->top == -1;
}
int isFull(Stack *s) {
return s->top == STACK_SIZE - 1;
}
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack overflow\n");
exit(1);
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack underflow\n");
exit(1);
}
return s->data[s->top--];
}
void decimalToBinary(int n) {
Stack s;
initStack(&s);
while (n != 0) {
push(&s, n % 2);
n /= 2;
}
while (!isEmpty(&s)) {
printf("%d", pop(&s));
}
}
int main() {
int n;
printf("Enter a decimal number: ");
scanf("%d", &n);
printf("Binary number: ");
decimalToBinary(n);
printf("\n");
return 0;
}
```
阅读全文