用一个头文件为#include<stdio.h>和#include<stdlib.h>的可以实现以下功能:1、栈的初始化、进栈与出栈等基本操作 2、栈的应用之一:数制转换(十进制转换为:二进制、八进制、十六进制)的C++代码
时间: 2024-10-24 11:11:03 浏览: 28
在C++中,你可以使用`std::stack`容器来模拟一个简单的栈结构,用于存储数字并实现数制转换。首先,我们先初始化一个动态大小的栈,然后通过一系列函数完成入栈(push)、出栈(pop)以及数制转换的功能。
```cpp
#include <iostream>
#include <stack>
#include <string>
// 定义栈的数据类型,这里假设我们只存储整数
using Stack = std::stack<int>;
// 初始化空栈
Stack initStack() {
Stack stack;
return stack;
}
// 入栈操作,将整数值x压入栈顶
void push(Stack &stack, int x) {
stack.push(x);
std::cout << "Pushed " << x << " to the stack.\n";
}
// 出栈操作,并返回栈顶元素,若栈为空则抛异常
int pop(Stack &stack) {
if (stack.empty()) {
throw std::runtime_error("Stack is empty.");
}
int top = stack.top();
stack.pop();
return top;
}
// 数制转换函数,示例仅提供二进制转换,其他进制类似
std::string decimalToBinary(int num) {
std::string binary;
while (num > 0) {
binary = std::to_string(num % 2) + binary;
num /= 2;
}
return binary;
}
// 主函数展示栈的操作和数制转换
int main() {
Stack myStack = initStack();
// 示例数据
int decimalNums[] = {10, 56, 27};
const size_t numsCount = sizeof(decimalNums) / sizeof(decimalNums[0]);
for (size_t i = 0; i < numsCount; ++i) {
push(myStack, decimalNums[i]);
std::cout << "Current stack content: ";
while (!myStack.empty()) {
std::cout << decimalToBinary(pop(myStack)) << " ";
}
std::cout << "\n";
}
return 0;
}
```
阅读全文