tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1993
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    s-tandel s-tandel ist offline Mitglied
    Registriert seit
    Jun 2005
    Beiträge
    19
    Hallo Forum!

    Ich habe ein Problem: Ich muss eine Adjazenzliste bauen, habe aber keine richtige Ahnung wie ich das anstellen soll!

    Wie ich eine einfach verkette Liste erstelle ist mir klar, auch wie ein Array erstellt wird. Aber wie kann ich die beide nun zusammen bringen?

    Und wie kann ich dann noch irgendwelche Werte in die Liste eingeben? Hilfe Bin schon langsam am verzweifeln.

    Wenn jemand eine Ahnung hat, wäre ich ihm sehr verbunden und dankbar.
     
    MfG s-tandel

    Ich danke euch schonmal im Voraus, dass ihr meine meist langen Ausführungen durchlest und euch dann darüber Gedanken macht******!

  2. #2
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    Hallo,

    das ist eigentlich nicht weiter schwer. Schau mal hier:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
        //Ein Array dessen Elemente aus Neighboulisten bestehen
        NeigbourList adjazenzliste[ANZAHL_KNOTEN];
        //in die Liste werden die Nachbarrn des aktuellen Knoten aufgenommen
        //wobei der Feldindex dem aktuellen Knoten entspricht
        adjazenzliste[0].push_back(2);
        adjazenzliste[0].push_back(5);
        
        //Zeige alle Nachbarrn des Knoten 1 an
        while(NeigbourList* next = adjazenzliste[0].getFirst(); next != NULL; next = next->getNext()){
            cout << "Nachbar des Knoten 1: " << next->getElement();
        }

    Da ich natürlich nicht weiß wie deine Liste ausschaut hab ich mir
    die Operationen auf der Liste grad mal so hingeschrieben...
    Was sich da anbieten würde wären zwei ineinandergeschachtelte
    std::vector, wenn du in C++ programmierst, die erlauben nämlich
    wahlfreien Zugriff....

    Gruß

    RedWing
    Geändert von RedWing (28.11.05 um 19:33 Uhr)
     
    "I'm not deaf, I'm ignoring you"
    ----

  3. #3
    s-tandel s-tandel ist offline Mitglied
    Registriert seit
    Jun 2005
    Beiträge
    19
    Naja das ist ja nicht schlecht!
    Aber kann man nicht irgendwie ein Array anlegen mit

    int array[7];

    und dann jedem einzelnen Feld des array halt "sagen" das der Inhaltstyp eine Liste ist und nicht wie in meinem Fall ein int-Wert.

    So sieht meine Liste aus:

    struct Knoten
    {
    int content;
    Knoten * next;
    };

    Knoten * wurzel = NULL;

    Das muss irgendwie mit typedef gehen. Ich weiß das das evtl. umständlich ist, müsste aber so sein.
     
    MfG s-tandel

    Ich danke euch schonmal im Voraus, dass ihr meine meist langen Ausführungen durchlest und euch dann darüber Gedanken macht******!

  4. #4
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    und dann jedem einzelnen Feld des array halt "sagen" das der Inhaltstyp eine Liste ist und nicht wie in meinem Fall ein int-Wert.
    Also eine Möglichekeit ein Individuelles Array anzulegen wäre sowas

    Code :
    1
    2
    3
    4
    5
    
    int main()
    {
        void* test[10]; 
        test[0] = (char*)"test";  
    }

    Nur macht das für mich nicht grad viel Sinn, auch in deinem Fall nicht.
    Das oben beschriebene sollte eigentlich schon ganz gut so Funktionieren.
    Oder wo liegt konkret dein Problem?
    Ein typdef macht da nicht viel Sinn, meiner Ansicht nach...

    //Edit: Vielleicht kannst du auch noch die Operationen auf deine
    Liste mit angeben.

    Gruß

    RedWing
    Geändert von RedWing (28.11.05 um 21:27 Uhr)
     
    "I'm not deaf, I'm ignoring you"
    ----

Ähnliche Themen

  1. Adjazenzliste
    Von regillus im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 10
    Letzter Beitrag: 19.05.09, 21:01