Vektor von verketteten Listen
-
Hi Leute!
Ich hab ein kleines Verständnisproblem bei C. Kann mir einer von euch dabei helfen? Folgendes (Quellcodeauszug sieheunten):
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!