用C++建立一个空栈对已建立的栈进行插入、删除、取栈顶元素等基本操作。 基于顺序栈编写算法,利用顺序栈存储十进制转换为其他进制后的结果。并输出转换后的结果。
时间: 2024-10-19 11:13:18 浏览: 45
在C++中,我们可以使用数组或动态内存分配来创建一个简单的线性栈,即顺序栈。以下是使用数组实现一个基础的栈结构以及对应的操作:
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 100; // 栈的最大容量
class Stack {
private:
int top;
int arr[MAX_SIZE]; // 存储栈元素的数组
public:
Stack() : top(-1) {} // 初始化栈为空
bool isEmpty() const { return top == -1; }
bool isFull() const { return top == MAX_SIZE - 1; }
void push(int value) {
if (isFull()) {
cout << "Stack overflow!" << endl;
return;
}
top++;
arr[top] = value;
}
int pop() {
if (isEmpty()) {
cout << "Stack underflow!" << endl;
return -1;
}
int value = arr[top];
top--;
return value;
}
int getTop() const {
if (isEmpty()) {
cout << "Stack is empty!" << endl;
return -1;
}
return arr[top];
}
};
int decimalToOtherBase(int decimal, int base) {
Stack stack;
while (decimal > 0) {
stack.push(decimal % base);
decimal /= base;
}
// 从栈顶开始取数,构建转换后的字符串
string result;
while (!stack.isEmpty()) {
result += to_string(stack.pop());
}
// 如果转换结果不足三位,前面补零
while (result.length() < 3 && !stack.isEmpty()) {
result = '0' + result;
}
return stoi(result, nullptr, base); // 转换回对应的整数值
}
int main() {
int decimalNumber = 12345;
int targetBase = 8;
int convertedValue = decimalToOtherBase(decimalNumber, targetBase);
cout << "Decimal " << decimalNumber << " in base " << targetBase << " is: " << convertedValue << endl;
return 0;
}
```
在这个例子中,我们首先实现了一个顺序栈,包含了`push`、`pop`和`getTop`方法。然后,函数`decimalToOtherBase`将给定的十进制数转换成其他进制,通过不断除以目标基数并将余数压入栈中。最后,从栈顶取出所有数字,拼接成字符串,并转换回整数。
阅读全文
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20241231044937.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)