//Дополнение недостающими элементами по левому краю CStack* MakeItFull(CStack *Sequence) { CStack* ToAdd = new CStack; CStack* Reverse = new CStack; char temp; int i; while ( Sequence->Size() != 0 ) { temp = Sequence->Pop_Back(); Reverse->Push_Back(temp); i = -1; while ( i < 5 && temp != sym[++i] ); if ( i < 3 ) { if (ToAdd->Size() != 0) { if( ToAdd->Pop_Back() != temp ) return NULL; } } else { ToAdd->Push_Back(sym[i-3]); } } while ( ToAdd->Size() != 0 ) Reverse->Push_Back(ToAdd->Pop_Back()); while ( Reverse->Size() != 0 ) Sequence->Push_Back(Reverse->Pop_Back()); delete Reverse; delete ToAdd; return Sequence; }
//Вывод стека void output(CStack* Sequence) { CStack* Temp = new CStack; while( Sequence->Size() != 0 ) Temp->Push_Back(Sequence->Pop_Back()); while( Temp->Size() != 0 ) printf("%c",Temp->Pop_Back()); putchar('\n'); }