7-2 数据结构考题 十进制转换为二进制 分数 20 作者 王群芳 单位 合肥师范学院 利用栈(以顺序栈作存储结构)实现进制转换。给定一个十进制非负整数,编程将该数以二进制形式输出。 顺序栈的类型定义: #define MA
时间: 2024-06-15 14:09:04 浏览: 249
十进制转化为八进制 c语言 数据结构栈练习
4星 · 用户满意度95%
根据你提供的信息,这是一道关于数据结构的考题,要求使用栈来实现十进制转换为二进制的功能。下面是一种可能的实现方式:
```c++
#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} SqStack;
void InitStack(SqStack &S) {
S.top = -1;
}
bool StackEmpty(SqStack S) {
return S.top == -1;
}
bool Push(SqStack &S, int x) {
if (S.top == MAXSIZE - 1) {
return false; // 栈满,插入失败
}
S.data[++S.top] = x;
return true;
}
bool Pop(SqStack &S, int &x) {
if (S.top == -1) {
return false; // 栈空,弹出失败
}
x = S.data[S.top--];
return true;
}
void DecimalToBinary(int n) {
SqStack S;
InitStack(S);
while (n != 0) {
Push(S, n % 2);
n /= 2;
}
while (!StackEmpty(S)) {
int x;
Pop(S, x);
cout << x;
}
}
int main() {
int decimal;
cout << "请输入一个十进制非负整数:";
cin >> decimal;
cout << "转换为二进制形式为:";
DecimalToBinary(decimal);
return 0;
}
```
这段代码使用了顺序栈来实现进制转换。首先,将十进制数除以2取余数,将余数依次入栈,然后再依次出栈输出即可得到二进制形式的数。
阅读全文