Eine einfach verkette Liste



  • Ja das ist eine Übung um die arbeitsweise von listen und Handles zu verstehen.

    @Fatzi: Wie lauten den die Fehler, es würde das "suchen" vereinfachen wenn wie die kennen würden?

    Gruß
    Rudi G



  • ref struct listenelement
    {
        String ^daten;
        listenelement ^next;
    };
    

    Da fehlte ein ^.
    Ist mir gerade aufgefallen... hat sicher noch mehr probleme.

    @Rudi G: woher weisst Du denn dass es eine Übung ist... kennst Du Fatzi?

    Simon



  • simon.gysi schrieb:

    @Rudi G: woher weisst Du denn dass es eine Übung ist... kennst Du Fatzi?

    Nein ihn kenne ich garnicht aber die Aufgabe 😉

    Diese Aufgabe und auch die Aufgabe mit den "Kisten" und einige weiter aufgaben kenne ich vom "Fernstudium" einer großen Fernschule 🙂



  • Gehd noch nichd.
    Was mache ich nur valsch?

    Grus Fatzi



  • Du Postest keine Fehlermeldungen und Beschreibungen.



  • Alter, was ist mit deiner Rechtschreibung los? Valsch??

    Hab beim überfliegen deines Codes zum Bsp folgendes gesehen:

    whil (hilfsHandle->next != nullptr) 
        {    
            hilfsHandle = hilfsHandle->next; 
        }
    

    Bei while fehlt das e...



  • kann mir bitte jemand erklären, was das hier bedeutet:
    String ^daten;
    ?
    das ding da: ^
    vor daten was soll das ?



  • ^ ist ein managed Zeiger. Siehe Grundlagen C++/CLI



  • Ich würde es nicht als Zeiger sondern als "Referenz auf den GC-Heap" bezeichnen.



  • Du hast im Code sehr viele Fehler. Du vergisst teilweise einfach irgendwelche Zeichen! Dann sind Massenhaft Fehler normal!

    // Einfach verkette Liste.cpp: Hauptprojektdatei.
    
    /*#############################################################
    
    Eine einfach verkette Liste
    
    #############################################################*/
    
    #include "stdafx.h"
    
    using namespace System;
    
    ref struct listenelement
    {
        String ^daten;
    
        listenelement [b]^[/b]next;
    };
    
    //neues Element am Ende der Liste einfügen
    
    void einfuegen(String ^datenneu, listenelement ^listenanfang)
    {
        //ein Hilfshandle zum Wandern in der Liste
    
        listenelement ^hilfsHandle;
    
        //Hilfshandle an den Anfang der Liste setzen
    
        hilfsHandle = listenanfang;
    
        //Durch die Liste gehen, bis das letzte Element erreicht ist
    
        whil[b]e[/b] (hilfsHandle->next != nullptr)
        {   
            hilfsHandle = hilfsHandle->next;
        }
    
        //Neues Element am Ende der Liste einfügen
    
        hilfsHandle->next =gcnew listenelement;
    
        //Hilfshandle auf das neue Element setzen
    
        hilfsHandle = hilfsHandle->next;
    
        //Zeichenkette im neuen Element eintragen
    
        hilfsHandle->daten = datenneu;
    
        //nullptr wird automatisch zugewiesen!
    
    }
    
    //Alle Element der Liste ausgeben
    
    void ausgeben(listenelement ^listenanfang)
    {
        //ein Hilfshandle zum Wandern in der Liste
    
        listenelement [b]^[/b]hilfsHandle;
    
        hilfsHandle = listenanfang;
    
        //erstes Element ausgeben
    
        Console::WriteLine("{0}",hilfsHandle->daten);
    
        //Solange das Ende der Liste noch nicht erreicht ist:
    
        //Hilfshandle auf das nächste Element setzen und die Daten ausgeben
    
        whil[b]e[/b] (hilfsHandle->next != nullptr)
        {
            hilfsHandle = hilfsHandle->next;
    
            Console::WriteLine("{0}",hilfsHandle->daten);
        }
    }
    
    int main(array<System::String ^> ^args)
    {
       //Handle auf den Anfang der Liste
    
        listenelement ^listenanfang;
    
        //das erste Element per Hand erzeugen
    
        listenanfang = gcnew listenelement;
    
        //Zeichenkette in das erste Element schreiben
    
        //nullptr wird automatisch gesetzt
    
        listenanfang->daten = "Element 0";
    
        //in einer Schleife mehrere Daten einfügen
    
        for (Int32 schleife=1; schleife<3;schleife++)
    
            einfuegen("Element "+schleife,listenanfang);
    
        //die Liste ausgeben
    
        ausgeben(listenanfang);
    
        [b]return 0;[/b]
    
        }
    

    Ich hab mal hinzugefügt was du vergessen hast und es Fett geschrieben(Farbig hervorheben geht leider nicht).

    Dieses Skript aus dem Heft CPBS 5A ist genau so auch im Heft und wenn du dort richtig geschaut hättest, hättest du die Fehler sicher auch selbst gesehen. 😉


Anmelden zum Antworten