Wenn fertig, bitte Fenster schließen
|
// Lösung zu Klassen // Zuerst Dateien einbinden #include <iostream> #include <cstdlib> using std::cout; using std::endl; // Stackgrösse festlegen const int SSIZE = 10; // Klassendefinition class Stack { // Eigenschaften short values[SSIZE]; // Feld für Ablage der Werte short stackPtr; // Feldindex (Stackindex) public: // Schnittstelle void Init(); // Stack initialisieren bool Push(short val); // Wert auf Stack ablegen bool Pop(short& val); // Wert vom Stack abholen }; // Definition der Memberfunktionen // Stack initialisieren void Stack::Init() { stackPtr = 0; } // Wert auf Stack ablegen bool Stack::Push(short val) { bool retval = false; // Returnwert initialisieren // Falls Stack noch nicht voll ist if (stackPtr != SSIZE) { // Neuen Wert ablegen values[stackPtr] = val; stackPtr++; // Returnwert auf true setzen retval = true; } return retval; } // Wert vom Stack holen bool Stack::Pop(short& val) { bool retval = false; // Returnwert initialisieren // Falls noch Werte auf dem Stack if (stackPtr!=0) { // Wert vom Stack holen stackPtr--; val = values[stackPtr]; // Returnwert auf true setzen retval = true; } return retval; } // Stackobjekt definieren Stack myStack; // main() Funktion int main() { bool retVal; short val; // Stack initialisieren myStack.Init(); // Stack so lange füllen bis er voll ist cout << "Schiebe Werte auf Stack:\n"; do { val = std::rand() % 100; retVal = myStack.Push(val); if (retVal) cout << val << ' '; } while (retVal); // Alle Werte vom Stack wieder holen cout << "\nLese Werte vom Stack:\n"; while (myStack.Pop(val)) { cout << val << ' '; } cout << endl; } |