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