栈的初始化、压栈、弹栈等基本操作的实现利用栈的基本操作实现数制转换问题。c++
时间: 2024-05-09 14:15:47 浏览: 90
栈的基本操作包括:初始化、压栈、弹栈、获取栈顶元素等。可以使用 STL 中的 stack 容器来实现这些操作。
以下是一个利用栈实现十进制转二进制的示例代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
void decimalToBinary(int n) {
stack<int> s;
while (n > 0) {
s.push(n % 2);
n /= 2;
}
while (!s.empty()) {
cout << s.top();
s.pop();
}
}
int main() {
int decimalNum = 10;
cout << decimalNum << " in binary is ";
decimalToBinary(decimalNum);
cout << endl;
return 0;
}
```
运行结果:
```
10 in binary is 1010
```
其中,decimalToBinary 函数用于将十进制数转换为二进制数。首先创建一个栈 s,然后依次将 n 对 2 取余数的结果压入栈中,直到 n 变为 0。最后,将栈中的元素依次弹出并输出,就得到了二进制数。
在主函数中,我们将十进制数 10 转换为二进制数,并输出结果。
相关问题
用数据结构的知识写栈的表示与实现的C++代码,头文件为#include<stdio.h>和#include<stdlib.h>可以实现以下功能:1、栈的初始化、进栈与出栈等基本操作 2、栈的应用之一:数制转换(十进制转换为:二进制、八进制、十六进制)
在C++中,我们可以使用数组或链表来实现栈的数据结构。这里,我将展示如何使用动态数组(vector)作为底层容器来创建一个简单的线性栈。同时,我会演示栈的基本操作以及栈在数制转换中的应用。
首先,我们需要一个Stack类的声明,包含基本操作:
```cpp
#include <iostream>
#include <vector>
#include <string>
class Stack {
private:
std::vector<int> data;
public:
// 初始化空栈
Stack() {}
// 判断栈是否为空
bool isEmpty() const { return data.empty(); }
// 入栈(压栈)
void push(int value) {
data.push_back(value);
}
// 出栈(弹栈)
int pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
int top = data.back();
data.pop_back();
return top;
}
// 查看栈顶元素(不改变栈)
int top() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
return data.back();
}
};
// 数制转换函数,利用栈辅助实现
std::string decimalToBase(int num, int base) {
Stack digits;
while (num > 0) {
digits.push(num % base);
num /= base;
}
std::string result;
while (!digits.isEmpty()) {
result += std::to_string(digits.pop());
}
return result;
}
int main() {
try {
Stack s;
s.push(42); // 进栈
std::cout << "Top element is: " << s.top() << std::endl; // 输出栈顶元素
std::cout << "Decimal to binary: " << decimalToBase(s.pop(), 2) << std::endl; // 十进制转二进制并出栈
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个示例中,`decimalToBase`函数使用了栈来存储计算过程中得到的每一位数字,最后再按照相反的顺序组合成目标基数的表示。注意,这里假设用户输入的是正整数进行转换。
阅读全文