Listen als Elemente von einer Struktur



  • Hallo Forum,

    ich beschäftige mich gerade mit Strukturen, Zeigern, Listen usw. Ich stehe da nun vor folgendem Problem.
    Ich habe zwei Strukturen:

    struct test{
        int ii;
        int bb;
        char tt;
        test *next;
    }
    
    struct testit{
        int gg;
        int ff;
        double xx;
    }
    

    Aus beiden Strukturen erstelle ich mir Listen. Die erste Liste hat z.B 10 Elemente der Struktur test und die zweite Liste z.B. 15 Elemente der Struktur testit.
    Diese beiden Listen sollen nun widerum bestandteil einer dritten Struktur sein.

    struct übergeordnet{
        "Liste aus Strukturen test";
        "Liste aus Strukturen testit";
        int var;
    }
    

    Die beiden ersten Listen zu erstellen klappt wunderbar, doch nun bin ich dabei diese beiden Listen in die dritte Struktur einzubauen. Da komme ich irgendwie nicht weiter.
    Wäre echt toll, wenn mir da jemand weiterhelfen könnte.

    Vielen Dank schonmal.
    Grüße
    ...



  • Benutzt du dafür eine eigene Listenkonstruktion oder ein std::list<>? (zumindest test sieht so aus, als ob das zu einer einfach verketteten Liste gehören soll). Im ersten Fall benötigst du Zuweisungsoperatoren, um die Listenstruktur zu übergeben.



  • Hallo,

    aus test und testit mache ich bisher eine einfach verkettete Liste. Diese beiden Listen sollen nun noch in die übergeordnete Struktur gepackt werden.



  • Zeig doch mal die Deklaration der Listen, die du hast - ohne weitere Infos kann ich nur raten, was wie gehen könnte.



  • Hallo,

    hier erstmal meine Strukturen:

    struct test {
             short X;  
             short Y;             
             char status;        
             test *next;
          };
    
          struct testit {
             short X; 
             short Y; 
             short ID;          
             char typ;         
             testit *next;   
         };
    
         struct indi {        
             int kosten;        
             int fitness;       
             indi *next;  
         };
    

    Hir nun z.B. wie ich die Liste test erstelle:

    test *pointer;  // Zeiger auf Listenelement
    test *anfang;
    test* neuelem=new test; // neuelem ist ein Zeiger auf das neue Element
    
    if(anfang == NULL) // Wenn die Liste leer ist, wird das erste Element der Liste
    		   // erzeugt
    {
        zahl= zahl +1;
        // Zeiger auf Listenanfang, auf neues Listenelement zeigen lassen 
        anfang= neuelem;           
        pointer= anfang;           // Pointer zeigt auf erstes Listenelement 
        pointer->X= x;   
        pointer->Y= y;     	
        pointer->next= NULL;       // Listenende markieren, Pointer auf NULL setzen }
    else                          /* Liste nicht leer */
    {
        pointer= anfang;
        while(pointer->next != NULL )       
        /*...Pointer auf naechstes Listenelement schieben */
        pointer= pointer->next;
        /* Speicherplatz fuer neues Listenelement holen */   
        pointer->next= new test;
        /* Pointer auf neues Listenelement schieben */
        pointer= pointer->next;
        /* Aus Eingabedat. eingel. Wert wird Variable in Struktur zugewiesen */
        pointer->X= x;   
        pointer->Y= y;   	
        pointer->next= NULL;/* Listenende markieren, Zeiger auf NULL setzen */	        }
    

    Genau das gleiche mache ich auch mit testit. Nun Möchte ich halt eine weitere Struktur haben:

    struct indi {        
             int kosten;        
             int fitness;       
             indi *next;  
         };
    

    In dieser Struktur (indi) sollen nun zu den anderen beiden Variablen auch die Listen test und testit eingebunden sein.



  • struct list_pack
    {
      test* test_list;
      testit* it_list;
      //...
    };
    
    list_pack paket;
    test* tl_anfang;//fülle test-Liste
    testit* il_anfang;//fülle testit-Liste
    paket.test_list=tl_anfang;
    paket.it_list=il_anfang;
    

    (Ist das ungefähr das, was du vorhattest?)



  • hallo,

    ja, so meinte ich da, wenn ich das richtig verstanden habe.

    deine.

    struct list_pack
    {
      test* test_list;
      testit* it_list;
      //...
    };
    

    ist meine:

    struct indi {        
             int kosten;        
             int fitness;      
             test* test_list;
             testit* it_list; 
         };
    

    mit:

    list_pack paket;
    

    erzeuge ich eine struktur mit namen paket vom typ list_pack...
    hier mache ich halt meine bisherigen operationen, um meine listen zu erstellen:

    test* tl_anfang;//fülle test-Liste
    testit* il_anfang;//fülle testit-Liste
    

    und mit :

    paket.test_list=tl_anfang;
    paket.it_list=il_anfang;
    

    übergebe ich die zeiger, die auf den anfang der jeweiligen Liste zeigen an die struktur paket.

    habe ich das so richtig verstanden?



  • Gut zusammengefasst 🙂 (es ist schön, mal jemanden zu sehen, der die Erklärungen auf Anhieb versteht)


Anmelden zum Antworten