目录
题目
代码实现
输出
题目
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。
要求函数min、push 以及pop 的时间复杂度都是O(1)。
代码实现
#include <iostream>template<typename T>class stack
{
public:stack() {pdata = new T[max_size];pmindata = new T[max_size];}~stack() {if(pdata){delete[] pdata;}if(pmindata){delete[] pmindata;}}T min(void){return pmindata[size - 1];}void push(T data){*(pdata + size) = data;if(size == 0){pmindata[0] = data;}else{if(data < pmindata[size - 1]){pmindata[size] = data;}else{pmindata[size] = pmindata[size - 1];}}size++;}T pop(void){size--;return *(pdata + size);}private:const int max_size = 1000;int size = 0;T* pdata;T* pmindata;
};int main()
{stack<int> m_stack;m_stack.push(10);m_stack.push(15);m_stack.push(13);m_stack.push(7);m_stack.push(6);std::cout << m_stack.min() << std::endl;std::cout << m_stack.pop() << std::endl;std::cout << m_stack.min() << std::endl;std::cout << m_stack.pop() << std::endl;std::cout << m_stack.min() << std::endl;return 0;
}