OOP Stack für Integers

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

SpionAtom

Betreff: OOP Stack für Integers

BeitragSo, Okt 09, 2005 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

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
Wink Wink Wink Wink Wink

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group