www.pudn.com > stacks.rar > stacks.cpp
#include#include int count; template class Stack{ public: Stack(int Max=10); Stack(Stack & ); ~Stack(){delete []stack;} bool Empty()const{return top==-1;} bool Full()const{return top==Maxtop;} T Top()const; Stack &Push(const T&x); Stack &Pop(T&x); private: int top; int MaxTop; T *stack; }; template Stack ::Stack(int Max) { MaxTop=Max-1; stack=new T[Max]; top=-1; } template Stack ::Stack(Stack &s) { stack=new T[s.MaxTop+1]; MaxTop=s.MaxTop; top=s.top; for(int i=0;i<=top;i++) { stack[i]=s.stack[i]; } } template T Stack ::Top()const { if(Empty())throw OutOfBounds(); else return stack[top]; } template Stack &Stack ::Push(const T&x) { stack[++top]=x; return *this; } template Stack &Stack ::Pop(T&x) { x=stack[top--]; return *this; } void cp(Stack &jin,Stack &zg,int *chu,int k,int n,ofstream &out,int j) { int p,i; Stack jin1(jin); Stack zg1(zg); if(j==0) { jin1.Pop(p); zg1.Push(p); } else{ zg1.Pop(chu[k]); k++; } if(jin1.Empty()&&zg1.Empty()) { for(i=0;i >n; ofstream out("output.txt"); int *chu; chu=new int[n]; for(i=0;i zg(n); Stack jin(n); count=0; for(i=n;i>0;i--) jin.Push(i); cp(jin,zg,chu,k,n,out,j); out<