Sort a stack

PROBLEM :
Given a stack, the task is to sort it such that the top of the stack has the greatest element.

Input:
The first line of input will contains an integer T denoting the no of test cases . Then T test cases follow. Each test case contains an integer N denoting the size of the stack. Then in the next line are N space separated values which are pushed to the the stack.

Output:
For each test case output will be the popped elements from the sorted stack.

Constraints:
1<=T<=100
1<=N<=100

Example(To be used only for expected output):
Input:
2
3
3 2 1
5
11 2 32 3 41

Output:
3 2 1
41 32 11 3 2

Explanation:
For first test case stack will be
1
2
3
After sorting
3
2
1

When elements  popped : 3 2 1

--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

/*The structure of the class is
class SortedStack{
public:
stack<int> s;
void sort();
};
*/

/* The below method sorts the stack s
you are required to complete the below method */

void SortedStack :: sort()
{
    stack<int> sta ;
   
    while(!s.empty())
    {
        sta.push(s.top()) ;
        s.pop() ;
    }
   
    int temp ;
    while(!sta.empty())
    {
        temp=sta.top() ;
        sta.pop() ;
        while(!s.empty()&&s.top()>temp)
        {
            sta.push(s.top()) ;
            s.pop() ;
        }
        s.push(temp) ;
    }
}

---------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )