Example #1
0
//Дополнение недостающими элементами по левому краю
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;
}
Example #2
0
//Вывод стека
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');
}