Skip to main content

Sorting stack using recursion

#include<iostream>
#include<stack>
using namespace std;
void SortInsert(stack<int> &s,int ele)
{
    if(s.empty() or ele>s.top())
    {
        s.push(ele);
    }
    else
    {
        int temp=s.top();
        s.pop();
        SortInsert(s,ele);
        s.push(temp);
    }
}
void SortStack(stack<int> &s)
{
    if(!s.empty())
    {
        int temp=s.top();
        s.pop();
        SortStack(s);
        SortInsert(s,temp);
    }
}
void display(stack<int> s)
{
    while(!s.empty())
    {
        cout<<s.top()<<" ";
        s.pop();
    }
    cout<<endl;
}
int main()
{
    stack<int> s;
    int n;
    cout<<"Enter the number of elements of stack"<<endl;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int x;
        cin>>x;
        s.push(x);
    }
    display(s);
    SortStack(s);
    display(s);
    return 0;
}

Comments

Popular posts from this blog

Gcd using recursion

#include<iostream> #include<algorithm> using namespace std; int gcd(int m,int n) {     if(max(m,n)%min(m,n)==0)     {         return min(m,n);     }     else     {         gcd(max(m,n)%min(m,n),min(m,n));     } } int main() {     int m,n;     cin>>m>>n;     cout<<gcd(m,n);     return 0; }

Bubble Sort Algorithm

//bubble sort algorithm in c++ #include<bits/stdc++.h> using namespace std; void bubble_sort(int arr[],int n) {     int i,j;     for(i=1;i<n;i++)     {         for(j=0;j<n-i;j++)         {             if(arr[j]>arr[j+1])             {                 swap(arr[j],arr[j+1]); //swap is an inbuilt function             }         }     }     //time complexity is O(n^2) } int main() {     int n,i;     cout<<"Enter the number of elements of the array"<<endl;     cin>>n;     int arr[n];     for(i=0;i<n;i++)     { ...

Counting the number of strongly connected sub graph

#include<bits/stdc++.h> using namespace std; class graph {     int v;     list<int> *adj; public:     graph(int v)     {         this->v=v;         adj=new list<int>[v];     }     void add_edge(int v,int w)     {         adj[v].push_back(w);         adj[w].push_back(v);     }     void dfs(int start,bool visited[]);     void counted(int start); }; void graph:: dfs(int start,bool visited[]) {     visited[start]=true;     for(auto it=adj[start].begin();it!=adj[start].end();it++)     {         if(!visited[*it])         {             dfs(*it,visited);  ...