Vektor von verketteten Listen



  • Hi Leute!
    Ich hab ein kleines Verständnisproblem bei C. Kann mir einer von euch dabei helfen? Folgendes (Quellcodeauszug siehe

    unten):

    Ich benötige einen Vektor der Länge n vom Typ (t_nachbar*), hier eine einfach verkettete Liste. Der Vektor soll mit

    der Funktion new_knotenvector erzeugt werden. Beim Initialisieren der Listenköpfe (mit new_list) in den einzelnen

    Arrayelementen bekomme ich immer die Fehlermeldung, dass die Typen von vec[i] und der Rückgabewert von new_list nicht

    übereinstimmen. Das sehe ich aber nicht. Was mache ich falsch? Was muss ich ändern?

    Quellcode:
    ----------

    typedef struct nachbar {
    	int kante;
    	int knoten;
    	struct nachbar * next;
    } t_nachbar;
    
    t_nachbar * new_list ()
    {
    	t_nachbar * anfang;
    	anfang = calloc(1, sizeof(t_nachbar));
    	anfang->next = NULL;
    	return (anfang);
    }
    
    t_nachbar * new_knotenvector (int n)
    {
    	int i;
    	t_nachbar * vec;
    	vec = malloc(n * sizeof(t_nachbar *));
    	for (i=0;i<n;i++) {
    		vec[i] = new_list(); 	/*  <----- Hiermit ist er nicht einverstanden*/
    	}
    	return (vec);
    }
    


  • vec ist bei Dir ein Array von Elementen des Typs t_nachbar. Du willst aber ein Array von Zeigern auf den Typ t_nachbar haben und deshalb musst Du vec als t_nachbar ** definieren.



  • Ich dachte, das wäre mit einem Stern (*) schon erledigt. Danke für deine rasche Hilfe!


Anmelden zum Antworten