Lektion 42:

Die Klasse StackAsVector

Jetzt haben Sie endlich alle Mittel zur Hand, um eine schöne Stack-Klasse zu bauen. Wir nehmen die Klasse StackAsFixedVector und nennen sie um nach StackAsVector. Die unpraktische Eigenschaft, "fixed" zu sein, kann jetzt entfallen, weil jetzt die Möglichkeiten bekannt sind, wie das Programm sich Speicher besorgen kann, ohne daß dessen Größe fest im Programm vorgegeben ist. Wir ändern Sie den Konstruktor so um, daß er als Argument eine int-Variable size nimmt, und ein Array der Größe size auf dem Freispeicher (heap) anlegt.

Mit diesen Änderungen sieht die Stack-Klasse jetzt so aus:

const int STACK_SIZE=5;
class StackAsVector
{
private:
   int *data;
   int topIndex;
public:
   StackAsVector(int size) // Konstruktor
   {
      data=new int[size];
      topIndex=-1;
   };
   void push(int i) // ein Element oben drauflegen
   {
      assert(topIndex<STACK_SIZE-1);
      topIndex=topIndex+1;
      data[topIndex]=i;
   };
   int top() // das oberste Element lesen
   {
      return data[topIndex];
   };
   void pop() // das oberste Element entfernen
   {
      assert(topIndex>-1);
      topIndex=topIndex-1;
   };
   bool empty() // ist der Stack leer?
   {
      return topIndex==-1;
   };
};

Einsendungen:

Lösung mit vielen Extras


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00