1、随机生成100个0-1000的随机整数,按照生成的顺序,存放到一个堆栈中; 2、查找这个堆栈的最大值并返回。
时间: 2024-12-17 12:52:11 浏览: 9
要实现这两个功能,我们可以使用`std::stack`容器(它是C++标准库中的一个容器适配器,提供了后进先出(LIFO)的数据结构)以及`std::random_device`和`std::mt19937`这两个用于生成伪随机数的工具。首先,我们创建一个堆栈,然后生成指定范围内的随机整数并将它们添加到堆栈中。最后,我们从堆栈顶部取出元素找到最大值。
以下是一个完整的C++示例:
```cpp
#include <iostream>
#include <stack>
#include <random>
int main() {
// 创建一个随机数生成器
std::random_device rd;
std::mt19937 gen(rd());
// 定义随机数的范围
const int min = 0, max = 1000;
// 初始化一个空堆栈
std::stack<int> randomStack;
// 生成并插入100个随机整数
for (int i = 0; i < 100; ++i) {
int randNum = min + gen() % (max - min + 1);
randomStack.push(randNum);
}
// 查找并输出堆栈中的最大值
if (!randomStack.empty()) {
int maxValue = randomStack.top();
while (!randomStack.empty() && randomStack.top() == maxValue) {
randomStack.pop(); // 如果有多个最大值,移除直到只剩下一个
}
std::cout << "最大值: " << maxValue << std::endl;
} else {
std::cout << "堆栈为空,无法找到最大值" << std::endl;
}
return 0;
}
```
在这个程序中,我们首先创建了一个随机数生成器`gen`,然后使用`min + gen() % (max - min + 1)`来确保每个生成的随机数都在指定范围内。然后我们将这些随机数依次压入堆栈。查找最大值时,我们在堆栈顶不断比较,直到找到第一个不是最大值的元素为止。
阅读全文