LIFO - Stack

01/01/2015 18:31 The_Dentist#1
Hallo,

Ich habe mal wieder eine Aufgabe, aber diesmal nur eine theoretische Frage und zwar:

Sollen wir einen "LIFO"- Stack programmieren, d.h. so viel Last In – First Out.

Momentan hänge ich da bei der Push - Methode.

Ich habe mir zwei Varianten überlegt. Zunächst noch, wir sollen das Ganze mit einem Array machen!

1. ) Ich übergebe mir im Konstruktor die Länge des Arrays und in der PUSH- Methode zähle ich immer eins runter und setze an diese Stelle das übergebe Element (in unserem Fall sind das Chars)

Das soll dann wie folgt aussehen:

Wir haben ein Char - Array mit z.b. a,b,c
Dann haben wir eine Länge von drei.
Die PUSH - Methode soll dann:
An Stelle 2 [Länge - 1] des Arrays setze ich das a. dann immer so weiter bis an Stelle 0 das c sitzt.

2. ) Alternativ könnte ich ja auch die 'Character' in der Reihenfolge speichern in einem Char Array und dieses dann einfach durch drehen.

Nun ist die Frage, ob eine meiner Überlegungen überhaupt sinnvoll ist? Sitze da jetzt schon etwas länger dran und bin mir nicht mehr wirklich sicher.

Vielen Dank!

LG
The_Dentist
01/01/2015 19:28 warfley#2
ich würde es so machen:

Code:
Klasse Keller:
Privat:
DeinArray
Index

Öffentlich:
Ablegen(Element): 
  Index := Index +1
  TmpArray := DeinArray
  DeinArray := Neuer Array Größe Index +1 //Also ist Index das höchste Feld
  Kopiere TmpArray in DeinArray
  DeinArray Feld Index := Element

RausHolen:
  Rückgabe := DeinArray Feld Index
  Index := Index -1
  TMPArray := Neuer Array Größe Index +1
  Kopiere DeinArray Elemente 0..Index in TMPArray
  DeinArray := TMPArray
  Gebe Rückgabe zurück

Ansehen:
  Gebe DeinArray Feld Index zurück
PS: Das sind die Methoden Push, Pop und Peek