题目:
将一个栈升序排序。被操作的栈有push | pop | top | empty操作
分析:
方案一
Hanoi(汉诺塔)的少许借鉴:大的在下,小的在上
/* sort:
* data为原数据
* temp为中转的栈
* aux为排序后的栈
*/
stack<int> aux;
stack<int> temp;
while (!data.empty())
{
int elem = data.top();
while (!aux.empty() && aux.top() < elem)
{
temp.push(aux.top());
aux.pop();
}
aux.push(elem);
data.pop();
while (!temp.empty())
{
aux.push(temp.top());
temp.pop();
}
}
方案二
把数据出栈扔进有序的数据结构中,比如:堆