Advertisement

开发一个特殊栈(支持获取最小值)

阅读量:

实现一个特殊的栈(能够返回栈中最小值)

该思路采用两个独立的栈结构进行数据处理,在压入(push)和弹出(pop)操作的同时实现数值追踪功能。其中data_stack用于存储数据值,min_stack用于记录最小值。在压入操作时会比较当前输入值与min_stack的顶元素,并将较小的那个数值推入到min_stack中。

注:min栈始终记录着data栈每一个状态下的最小值

复制代码
    class m_stack
    {
    	public:
    		void push(int value)
    		{
    			if(data.empty()&&min.empty())
    			{
    				data.push(value);
    				min.push(value);
    			}
    			else
    			{
    				data.push(value);
    				min.push(value<min.top()?value:min.top());
    			}
    		}
    	
    	void pop()
    	{
    		data.pop();
    		min.pop();
    	}
    	
    	int getmindata()
    	{

全部评论 (0)

还没有任何评论哟~