Tutorial
Verkettete Listen in FreeBASIC
Nach den vorstehenden Ausführungen sollten Sie nun in der Lage sein, mit Hilfe der Befehlsreferenz das folgende Programmbeispiel zu verketteten Listen in FreeBasic nachzuvollziehen. Wenn Ihnen die Bedeutung einer Anweisung nicht klar ist, können Sie das Schlüsselwort anklicken, woraufhin sich der entsprechende Eintrag in der Befehlsreferenz öffnet:
'Listen mit FreeBasic
'http://www.freebasic-portal.de
'Der UDT (user defined type) der Liste:
TYPE tListe
Inhalt As Integer
Naechstes As tListe PTR
END TYPE
DECLARE SUB ElementEinfuegenAmEnde (zahl As Integer)
DECLARE SUB ElementEinfuegenAmAnfang (zahl As Integer)
DECLARE SUB ListeAusgeben()
DECLARE SUB ElementLoeschen (zahl As Integer)
'Startpunkt der Wurzel SHARED (=global) deklarieren,
'damit er nicht bei jedem Prozeduraufruf als Argument
'übergeben werden muss.
DIM SHARED Start As tListe PTR
CLS
PRINT "Eine Liste in FreeBASIC"
PRINT
Start = 0 'Listenstart auf NULL setzen.
'Elemente hinzufügen
ElementEinfuegenAmEnde 12
ElementEinfuegenAmEnde 32
ElementEinfuegenAmEnde 42
ElementEinfuegenAmAnfang 1
ElementEinfuegenAmEnde 15
ElementEinfuegenAmEnde 36
ElementEinfuegenAmEnde 41
ElementEinfuegenAmAnfang 50
ElementEinfuegenAmAnfang 99
'Zwei Elemente löschen
ElementLoeschen 1
ElementLoeschen 99
ListeAusgeben
SLEEP
END
SUB ElementEinfuegenAmEnde (zahl As Integer)
If Start = 0 Then 'Falls die Liste leer ist: Anlegen!
Start = ALLOCATE(SIZEOF(tListe))
Start->Naechstes = 0
Start->Inhalt=zahl
Else '...falls nicht: Neues Element anlegen
'und anhängen!
Dim Element As tListe PTR
Dim Neu As tListe PTR
Neu = ALLOCATE(SIZEOF(tListe)) 'Speicher
'alloziieren
Neu->Inhalt = zahl
Neu->Naechstes = 0
Element = Start
Do
If Element->Naechstes = 0 Then 'Listenende
' erreicht!
Element->Naechstes = Neu 'Hier anfügen!
Exit Do '...und raus aus
' der Schleife!
Else
Element = Element->Naechstes 'Zum Nächsten
'Knoten
'weitergehen.
End If
Loop
End If
END SUB
SUB ElementEinfuegenAmAnfang (zahl As Integer)
If Start = 0 Then 'Falls die Liste leer ist: Anlegen!
Start = ALLOCATE(SIZEOF(tListe))
Start->Naechstes = 0
Start->Inhalt=zahl
Else '...falls nicht: Neues Element anlegen und
'Liste daran anhängen!
Dim Neu As tListe PTR
Neu = ALLOCATE(SIZEOF(tListe)) 'Speicher
'alloziieren
Neu->Inhalt = zahl
Neu->Naechstes = Start 'Ehem. Listenanfang als
'"Nächstes" definieren
Start = Neu 'Listenanfang auf das neue Element
'setzen
End If
END SUB
SUB ListeAusgeben()
If Start = 0 THEN
PRINT "Fehler: Die Liste ist leer!"
EXIT SUB
END IF
DIM Element As tListe PTR
Element = Start 'Zeiger auf
'den Anfang setzen.
Do
PRINT Element->Inhalt
If Element->Naechstes <> 0 Then 'Listenende noch
'nicht erreicht?
Element = Element->Naechstes 'Dann ein Element
'weitergehen!
Else
Exit Do 'Ansonsten Schleife
'verlassen.
End If
Loop
END SUB
SUB ElementLoeschen (zahl As Integer)
If Start = 0 THEN
PRINT "Fehler: Die Liste ist leer!"
EXIT SUB
END IF
Dim Element As tListe PTR, N As tListe PTR
If Start->Inhalt = zahl Then
Element = Start->Naechstes
DeAllocate Start
Start = Element
EXIT SUB
END IF
Element = Start
Do
If Element->Naechstes <> 0 Then
N = Element->Naechstes
If N->Inhalt = zahl THEN
Element->Naechstes = N->Naechstes
DeAllocate N
Exit Sub
Else
Element = Element->Naechstes
End If
Else
Exit Sub
End If
Loop
END SUB
Gehe zu Seite
1 2 3 4 5
Zusätzliche Informationen und Funktionen |
- Das Tutorial wurde am 07.01.2008 von Sebastian angelegt.
- Die aktuellste Version wurde am 09.07.2009 von Sebastian gespeichert.
|
|