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');
}
Example #3
0
//请写一个栈的模板类,要求栈的长度可以动态改变。使用如下代码进行测试:
int main()
{
	
	//调用普通模版
	int i;
	CStack<int> stInt;
	for (i = 1; i <= 20; i++)
	{
		stInt.Push(i);
	}
	cout << "调用CStack<int>普通模版, 元素个数为: " << stInt.Size() << endl;
	while (stInt.IsNotEmpty())
	{
		int iData;
		stInt.Pop(iData);
		cout << iData << " ";
	}
	cout << endl << endl;
	
	///*
	//调用特化模版
	CStack<char *> stCharP;
	for (i = 1; i <= 15; i++)
	{
		char sz[10];
		sprintf(sz, "s%d", i);
		stCharP.Push(sz);
	}
	cout << "调用CStack<char *>特化模版, 元素个数为: " << stCharP.Size() << endl;
	while (stCharP.IsNotEmpty())
	{
		char * pData;
		stCharP.Pop(pData);
		cout << pData << " ";
	}
	cout << endl << endl;
	//*/
	//返回
	system("pause");
	return 0;
}