模拟实现Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)。
思路:
Min(返回最小值的操作)我们可以实现用一个辅助栈或者辅助数组来实现。
用辅助栈来保存最小的值;
考虑到数据的多样性,所以用模板来实现。
代码实现:
#pragma once
#include<iostream>
using namespace std;
#include<assert.h>
template<class T>
class Stack //实现一个栈Stack
{
public:
Stack()
:_val(NULL)
, _size(0)
, _capacity(0)
{}
~Stack()
{
if (_val != NULL)
{
delete[] _val;
_val = NULL;
}
_size = 0;
_capacity = 0;
}
void push(const T& data)
{
Check_Capacity();
if (_size =&#