Saturday, February 7, 2015

Sorting using two stacks in C++

#include<iostream>
#include<cstdlib>
using namespace std;
class stack
{public:
int elmnt[50],top,i,j,n;
void push(int e);
void pop();
void sort();
};
 void stack::push(int j)
 { elmnt[++top]=j;
 }
 void stack::pop()
 {cout<<elmnt[top--]<<endl;
 }
 void stack::sort()
 { for(i=0;i<n-1;i++)
     {for(j=0;j<n-1-i;j++)
       {if(elmnt[j]<elmnt[j+1])
         {elmnt[j]=elmnt[j]+elmnt[j+1];
          elmnt[j+1]=elmnt[j]-elmnt[j+1];
          elmnt[j]=elmnt[j]-elmnt[j+1];
         }
       }
     }
 }
 int main()
 {stack s1,s2;s1.top=-1;
  cin>>s1.n;
  for(s1.i=0;s1.i<s1.n;s1.i++)
  {cin>>s1.j;
   s1.push(s1.j);
  }
  s1.sort();
  s2.top=-1;
  for(s2.i=0;s2.i<s1.n;s2.i++)
  s2.push(s1.elmnt[s2.i]);
  for(s2.i=0;s2.i<s1.n;s2.i++)
  s2.pop();
 }

No comments:

Post a Comment

Contributors

Translate