Ocena użytkownikóww: ***** / 2
Nadesłany przez Bartosz Bednarczyk, 23 sierpnia 2011 16:46
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
stos_2_c.h:
/*
* Bartosz "WiedźMAC" Bednarczyk
* Liceum Ogólnokształcące im. Władysława Broniewskiego w Strzelcach Opolskich
* Klasa reprezentująca stos (CPP)
* www.algorytm.org
*/
#ifndef Stack_H
#define Stack_H
#define PrintString(a,b) for( unsigned int i = 0; i < b; ++i ) fputc_unlocked(a[i], stdout) // Fast String Writing
template <class Type> class Stack
{
/* FIELDS */
private: Type *S;
private: unsigned int SIZE, MAX_SIZE;
/* METHODS */
private: void Resize() // to change stack's size
{
MAX_SIZE *= 10;
Type *Temp = new Type[MAX_SIZE];
for( unsigned int i = 0; i < SIZE; ++i ) Temp[i] = S[i];
S = Temp;
delete[] Temp;
}
public: void Push( Type x ) // Add new object to stack
{
if( SIZE == MAX_SIZE ) Resize();
else
{
S[SIZE] = x;
++SIZE;
}
}
public: void Pop() // Delete object from stack
{
if( SIZE == 0 ) PrintString("Stack is empty !\n", 17);
else --SIZE;
}
public: unsigned int Size() // Return count of object in stack
{
return SIZE;
}
public: bool Empty() // Is stack empty?
{
if( SIZE == 0 ) return true;
else return false;
}
public: Type Top() // Return value on top of stack
{
return S[SIZE-1];
}
public: Stack() // Stack's constructor
{
MAX_SIZE = 1;
SIZE = 0;
Resize();
}
};
#endif