Frage zu Stack



  • Hi leute,
    ich habe gerade eine klasse stack geschrieben.
    jetzt hab ich jedoch einige fragen dazu!
    also mit push wird ein element hinaufgelegt
    mit pop wieder heruntergeholt,
    mit top wird das oberste angezeigt
    mit isempty.....

    und dann noch print!
    wenn ich nun den stack am bildschirm ausgebe ist mein stack verschwunden! jedoch nicht gelöscht (denk ich halt)! darf das sein? falls nicht kann mir jemand sagen wie ich das umgehen kann?

    void intstack::push(int n) {                  // Element auf den Stack
    
       element *new_elem;
    
       new_elem=new element;                      // neuen Knoten erzeugen
       if (new_elem==0) error(ERR_MEMORY);        // Speichermangel...
       new_elem->value=n;                         // int eintragen
    
       new_elem->next=first;                      // Verkettung
       first=new_elem;                            // neue Stack-Spitze setzen
     }
    
    int intstack::print(){
    
        while (!isempty()) {
        int temp;
        temp = first->value;
        first=first->next;
        cout << "\t--> " << temp <<endl;
    }
    return 0;
    }
    

    noch eine frage zur funktion pop, wenn ich einen stack pope ist er lehr! das ist so schon richtig, oder muss ich die elemente erhalten??

    ich sage danke!!



  • Hm, deine print-Funktion ist so geschrieben, dass sie den Stack leermacht. Du schreibst ja sogar while (!isEmpty()) hin ... kann mir kaum vorstellen, dass man das macht ohne sich darüber im klaren zu sein, dass die Schleife abbricht, wenn der Stack eben leer ist 😉 Hast du das im Delirium geschrieben oder wie?

    void intstack::print() {
      element * temp = first;
      while (temp) {
        cout << temp->value << '\n';
        temp = temp->next;
      }
      cout << flush;
    }
    


  • ups, hab wohl einen denkfehler gehabt! hab mir gedacht muss ja irgendwann die schleife abbrechen!

    Danke du!


Anmelden zum Antworten