Stack
-
Hi,
ich habe mir in C++ einen kleinen Stack geschrieben, der folgendes schon
kann:[] push - Daten auf den Stack legen
[] print - Alle Daten die auf dem Stack sind ausgebenJetzt möchte ich noch pop einbauen. pop soll das letzte Element zurück
geben (return) und gleichzeitig das Element vom Stack entfernen.So in etwa sieht mein Code bisher aus:
CStack::CStack(unsigned int size) { _stack = new string[size]; if (_stack == NULL) { /* -ENOMEM */ } this->used = -1; this->size = size; } CStack::~CStack() { // TODO Auto-generated destructor stub } void CStack::push(string item) { this->used++; _stack[this->used] = item; } void CStack::print() { for (int i = 0; i <= this->used; i++) { cout << _stack[i] << endl; } } string CStack::pop() { }Fehlt aber natürlich noch einiges.
So, jetzt zu meiner eigentlichen Frage: Wie kann ich meine pop
Funktion schreiben? Die Rückgabe ginge mit return(_stack[this->used]),
aber wie kann ich dann auch das letzte Element auf dem Stack löschen?Danke
Franziskap.s.: Ich darf kein STL oder andere 'fertige' Klassen verwenden.
-
1. element an der stelle used rausholen
2. used eines runterzählen (sofern elemente vorhanden sind)
3. element, welches vorher herausgeholt wurde zurückgebenBTW: nach einem new oder new[] auf 0 zu prüfen ist nicht nötig (und nutzlos), denn es wird eine std::bad_alloc excetion geworfen. 0 wird nur bei der nothrow variante zurückgegeben.
Simon
-
Hi Simon!
genauso will ich es machen.
2 und 3 sind kein Problem.2. this->used--
3. return(letzteselement);Kannst du mir bei 1 helfen? Genau da hänge ich fest.
-
string CStack::pop() { std::string temp = _stack[used]; //... 2-3 return temp; }
-
Hat funktioniert. So eine einfache Lösung eigentlich...
Manchmal sieht man den Wald vor lauter Bäumen nicht..Danke ihr süssen