特殊的棧
實現特殊的棧,在實現棧的基本功能上,再返回棧中最小的元素
- 1、pop、push。getMin操作的時間複雜度都是;
- 2、設計的棧類型可以使用現成的棧結構
#include <iostream>
#include< stack >
using namespace std;
//s.empty(); //如果棧爲空則返回true, 否則返回false;
//s.size(); //返回棧中元素的個數
//s.top(); //返回棧頂元素, 但不刪除該元素
//s.pop(); //彈出棧頂元素, 但不返回其值
//s.push(); //將元素壓入棧頂
int main()
{
stack<int> mystack1,mystack2;
int a[5];
int temp = 0;
for (int i = 0; i < 5; i++)
cin >> a[i];
for (int i = 0; i < 5; i++)
{
mystack1.push(a[i]);
if (i == 0)
{
mystack2.push(a[i]);
temp = a[i];
}
else
{
if (a[i] <= temp)
{
mystack2.push(a[i]);
temp = a[i];
}
}
}
cout << mystack1.top() <<endl;
cout << mystack2.top() << endl;
system("pause");
return 0;
}
用隊列實現棧
兩個隊列
- 12345存入第一個隊列
- 1234出隊列進入第二個隊
- 第一個隊列先出5,實現後進先出
- 需要出4,則123出隊列到第一個隊列
- 第二個隊列只剩4,4出隊列,完成4的後進先出。
- 以此類推…
用棧實現隊列
兩個棧:
- 12345進第一個棧,1在最下面,5在最上面;
- 54321出棧進第二個棧,此時從上到下爲12345,此時1出棧,完成1的先進先出;
- 需要2出棧,將2出棧…以此類推