使得堆栈最小元素在栈顶
时间: 2024-01-02 15:17:49 浏览: 30
要实现堆栈最小元素在栈顶,可以使用两个栈,一个栈用来保存元素,另一个栈用来保存当前的最小值。每次入栈时,比较当前值和保存的最小值,如果当前值更小,则将当前值入最小值栈;否则,将最小值栈顶元素再次入栈。出栈时,两个栈同时弹出栈顶元素即可。
以下是一个示例代码实现:
```
class MinStack {
private:
stack<int> s;
stack<int> min_s;
public:
MinStack() {}
void push(int x) {
s.push(x);
if (min_s.empty() || x <= min_s.top()) {
min_s.push(x);
} else {
min_s.push(min_s.top());
}
}
void pop() {
s.pop();
min_s.pop();
}
int top() {
return s.top();
}
int getMin() {
return min_s.top();
}
};
```
这样实现的一个好处是,每次获取最小值时,只需要获取最小值栈的栈顶元素即可。时间复杂度为 O(1)。
相关问题
在具有10个元素的堆栈的栈顶插入数据11
要在具有10个元素的堆栈的栈顶插入数据11,需要进行以下步骤:
1. 检查堆栈是否已满,如果已满则无法插入数据。
2. 如果堆栈未满,则将栈顶指针加1,指向新的栈顶位置。
3. 将数据11插入到新的栈顶位置。
4. 确认插入成功,操作完成。
需要注意的是,在堆栈中插入数据时,栈顶指针的位置是非常重要的,因为它指示了当前栈顶元素的位置。如果栈顶指针的位置不正确,可能会导致数据插入失败或者数据被覆盖的问题。
在具有10个元素的堆栈的栈顶插入数据11用C语言实现
可以使用数组来实现一个具有10个元素的堆栈,并在栈顶插入数据11的C语言代码如下:
```c
#include <stdio.h>
#define MAXSIZE 10 // 定义堆栈的最大容量
int stack[MAXSIZE]; // 堆栈数组
int top = -1; // 栈顶指针
void push(int data) // 入栈操作
{
if (top == MAXSIZE - 1) // 判断堆栈是否已满
{
printf("Stack is full!\n");
return;
}
else
{
top++; // 栈顶指针加1
stack[top] = data; // 插入数据
printf("Push %d\n", data);
}
}
int main()
{
push(11); // 在栈顶插入数据11
return 0;
}
```
在上述代码中,使用数组`stack`来实现堆栈,使用变量`top`来表示栈顶指针。函数`push`用于将数据入栈,若堆栈已满则输出提示信息。在`main`函数中调用`push`函数并传入数据11,即可在堆栈的栈顶插入数据11。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)