algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Stos - Implementacja w C/C++
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
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
Dodaj komentarz