C++设计一个栈可以随时返回栈中元素最小值

题目

实现一个特殊的栈, 在实现栈的基本功能的基础上, 再实现返
回栈中最小元素的操作。
【要求】
1. pop、 push、 getMin操作的时间复杂度都是O(1)。
2. 设计的栈类型可以使用现成的栈结构。

分析

先放着,过后整理

代码

// 获得栈中最小值操作.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<stack>
using namespace std;

class Stack
{
public:
	int getmin();
	void push(int element);
	int pop();
	int size();
	int top();
private:
	stack<int>data;
	stack<int>min;

};
int Stack::getmin()
{
	if (min.empty())
		return -1;
	else
		return min.top();
}
void Stack::push(int element)
{
	if (min.empty())
		min.push(element);
	else if (element < min.top())
		min.push(element);
	else
	{
		int num1 = min.top();
		min.push(num1);
	}
	data.push(element);
}
int Stack::pop()
{
	if (data.empty())
		return -1;
	else
		min.pop();
	int number = data.top();
	data.pop();
	return number;
}
int Stack::size()
{
	return data.size();
}
int Stack::top()
{
	return data.top();
}

int main()
{
	Stack stack1;
	stack1.push(1);
	stack1.push(2);
	stack1.push(3);
	stack1.push(4);
	stack1.push(15);
	for (int i = 0; i <5; i++)
	{
		cout << " pop " << stack1.pop() << endl;
		cout << " min  " << stack1.getmin() << endl;
		cout << " top  " << stack1.top() << endl;
	}
}
发布了47 篇原创文章 · 获赞 3 · 访问量 1435

猜你喜欢

转载自blog.csdn.net/weixin_42076938/article/details/104442626