OOP Stack für Integers
Übersicht

![]() |
SpionAtomBetreff: OOP Stack für Integers |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier meine ersten Gehversuche mit BlitzMax.
Wer weiß, was die Datenstruktur Stack ist, wird sich schnell zurecht finden. Wenn das hier Resonanz findet, werde ich Queue und List nachliefern. Und vielleicht werde ich die Dinge von Integer allgemein auf Typen beliebiger Art erweitern. Aber dazu muss ich noch ein wenig diese Sprache lernen ![]() EDIT: Und schon habe ich gelesen das es die Liste noch gibt! Also kann ich auf die verzichten. Code: [AUSKLAPPEN] Rem Die Klasse Stack für Integers ============================== von Thomas Decker fur BlitzMax Der Stack hat folgende öffentliche Methoden: ? isEmpty:Int() - liefert true(1) zurück, wenn im Stack keine Zahlen gespeichert sind - liefert false(0) zurück, wenn im Stack Zahlen gespeichert sind ! add(pInt:int) - Fügt dem Stack die mitgegebene Zahl pInt hinzu ! remove() - Löscht den letzten Eintrag aus dem Stack ? show:Int() - liefert den letzten Eintrag aus dem Stack EndRem Type stackKnoten Field info:Int Field pre:stackKnoten Method setInfo(pInfo:Int) self.info = pInfo End Method Method getInfo:Int() Return self.info End Method Method setPre(pKnoten:stackKnoten) self.pre = pKnoten End Method Method getPre:stackKnoten() Return self.pre End Method End Type Type Stack Field anzahl:Int = 0 Field cKnoten:stackKnoten Method isEmpty:Int() Return (anzahl = 0) End Method Method add(pInt:Int) If anzahl = 0 Then self.cKnoten = New stackKnoten self.cKnoten.setInfo(pInt) 'cKnoten.setPre() 'Der erste Knoten hat keinen Vorgänger Else oKnoten:stackKnoten = self.cKnoten self.cKnoten = New stackKnoten self.cKnoten.setInfo(pInt) self.cKnoten.setPre(oKnoten) End If anzahl = anzahl + 1 End Method Method remove() If anzahl = 1 Then anzahl = 0 End If If anzahl > 1 Then self.cKnoten = self.cKnoten.getPre() anzahl = anzahl - 1 End If End Method Method show:Int() Return self.cKnoten.getInfo() End Method End Type Graphics 800, 600, 0, 0 S:Stack = New Stack Local a:Int Repeat 'Tastenabfrage If KeyHit(KEY_RETURN) Then a = Rand(1,10) S.add(a) do = 1 End If If KeyHit(KEY_BACKSPACE) If Not S.isEmpty() Then S.remove() do = 1 End If 'Anzeige Cls If Not S.isEmpty() DrawText S.show(),0,0 Else DrawText "Stack ist leer", 0, 0 DrawText "Enter drücken, um Zahl einzufügen, Backspace um Eintrag zu löschen, Esc zum Beenden", 0,30 Flip() Until KeyDown(KEY_ESCAPE) End ![]() ![]() ![]() ![]() ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group