左神的书——《程序员代码面试指南》之用一个栈实现另一个栈的排序c++实现
2017-01-01 22:56
399 查看
题目:
//用一个栈实现另一个栈的排序
//一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只能申请一个栈,除此之外,可以
// 申请新的变量,但不能申请额外的数据结构。如何完成排序?
#include<iostream>
using namespace std ;
#include <stack>
#include <cassert>
void SortStackByStack(stack<int>& s)
{
assert(!s.empty());
stack<int> helpstack;
while (!s.empty())
{
int value = s.top(); //用一个变量value标记s的栈顶元素。
s.pop();
while (!helpstack.empty() && value > helpstack.top()) //当辅助栈不为空,s的栈顶元素大于辅助栈顶元素,
{ //将辅助栈顶元素压回s中,直到value<辅助栈顶元素,将value压入辅助栈
s.push(helpstack.top());
helpstack.pop();
}
helpstack.push(value); //当辅助栈为空或者s的栈顶元素小于等于辅助栈顶元素,直接将s的栈顶元素压入辅助栈中。
}
while (!helpstack.empty())
{
s.push(helpstack.top());
helpstack.pop();
}
}
int main()
{
stack<int> s1;
s1.push(34);
s1.push(45);
s1.push(23);
s1.push(219);
s1.push(2);
SortStackByStack(s1);
cout << s1.top() <<endl;
cout << "hello..." <<endl;
system("pause");
return 0;
}
//用一个栈实现另一个栈的排序
//一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只能申请一个栈,除此之外,可以
// 申请新的变量,但不能申请额外的数据结构。如何完成排序?
#include<iostream>
using namespace std ;
#include <stack>
#include <cassert>
void SortStackByStack(stack<int>& s)
{
assert(!s.empty());
stack<int> helpstack;
while (!s.empty())
{
int value = s.top(); //用一个变量value标记s的栈顶元素。
s.pop();
while (!helpstack.empty() && value > helpstack.top()) //当辅助栈不为空,s的栈顶元素大于辅助栈顶元素,
{ //将辅助栈顶元素压回s中,直到value<辅助栈顶元素,将value压入辅助栈
s.push(helpstack.top());
helpstack.pop();
}
helpstack.push(value); //当辅助栈为空或者s的栈顶元素小于等于辅助栈顶元素,直接将s的栈顶元素压入辅助栈中。
}
while (!helpstack.empty())
{
s.push(helpstack.top());
helpstack.pop();
}
}
int main()
{
stack<int> s1;
s1.push(34);
s1.push(45);
s1.push(23);
s1.push(219);
s1.push(2);
SortStackByStack(s1);
cout << s1.top() <<endl;
cout << "hello..." <<endl;
system("pause");
return 0;
}
相关文章推荐
- C++ 使用一个栈实现另一个栈的排序
- 左神的书——《程序员代码面试指南》之设计一个有getmin功能的栈 c++实现
- 004使用一个栈对另一个栈完成排序(C++实现)
- 用一个栈实现另一个栈的排序
- 栈和队列(5)——用一个栈实现对另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序
- 左神的书——《程序员代码面试指南》之最大值减去最小值小于或等于num的子数组的数量 c++实现
- 用一个栈实现另一个栈的排序
- 数据结构5 用一个栈实现另一个栈的排序
- 1栈和队列--用一个栈实现另一个栈的排序
- 用一个栈来实现另一个栈的排序
- 左神的书——《程序员代码面试指南》之最大01子矩阵的大小 c++实现
- C++实现将一个字符串中的字符替换成另一个字符串的方法
- 用一个栈实现另一个栈的排序
- c++实现vector类,并有一个排序和一个查找的泛型算法
- 1_5用一个栈实现另一个栈的排序
- 栈和队列---用一个栈实现另一个栈的排序
- C++使用一个栈实现另一个栈的排序算法示例