用C++设计一个顺序栈 并利用该顺序栈将给定的十进制整数转换为二进制并输出
时间: 2024-10-08 12:13:15 浏览: 72
在C++中,我们可以创建一个简单的顺序栈(基于数组实现)来存储数据,并利用它将十进制整数转换为二进制。首先,我们需要定义一个栈结构体,包含元素的值以及栈顶指针。然后,我们将实现基本的入栈(push)、出栈(pop)和判断栈是否为空的操作。
```cpp
#include <iostream>
using namespace std;
// 定义栈结构体
struct Stack {
int capacity;
int* elements;
int top;
};
// 初始化栈
Stack createStack(int size) {
Stack stack;
stack.capacity = size;
stack.elements = new int[stack.capacity];
stack.top = -1;
return stack;
}
// 入栈操作
void push(Stack& stack, int value) {
if (stack.top >= stack.capacity - 1) {
cout << "Stack overflow.\n";
return;
}
stack.top++;
stack.elements[stack.top] = value;
}
// 出栈操作
int pop(Stack& stack) {
if (stack.top == -1) {
cout << "Stack underflow.\n";
return -1;
}
int poppedValue = stack.elements[stack.top];
stack.top--;
return poppedValue;
}
// 判断栈是否为空
bool isEmpty(Stack& stack) {
return stack.top == -1;
}
// 将十进制转换为二进制
string decimalToBinary(int num) {
string binary;
while (num > 0) {
binary = to_string(num % 2) + binary;
num /= 2;
}
return binary;
}
int main() {
Stack stack = createStack(10); // 创建一个大小为10的栈
int decimalNum = 42; // 待转换的十进制数
push(stack, decimalNum);
// 转换为二进制
push(stack, decimalToBinary(pop(stack)));
// 输出结果
if (!isEmpty(stack)) {
cout << "Converted number in binary: " << stack.elements[stack.top] << endl;
}
// 清理内存
delete[] stack.elements;
return 0;
}
```
在这个程序中,我们首先创建了一个栈并将十进制数42转换成二进制形式(42对应的二进制是101010),然后将这个二进制字符串再入栈。请注意,在实际应用中,栈通常不会用于这种转换过程,而是通过位运算直接完成。
阅读全文