hallo C Freunde!
ich schon wieder
Ich habe da mal ein paar fragen zur linked list...
Habe mir nun einige Beispiele Angeschaut zum Beispiel :
C-Programmierung: Verkettete Listen
http://de.wikibooks.org/wiki/C-Programmierung:_Verkettete_Listenhttp://perlgeek.de/de/artikel/einfach-verkettete-listen
und denke auch das ich diese gut verstanden habe.
Allerdings arbeiten diese Beispiele immer nur mit einem Èlment ich habe aber eine Liste an sich die ein letztes und erstes Element besitzt und ein Element das sieht so aus :
So weit so gut die Liste initialisiere ich nun mit einer init Funktion
hier wird alles auf NULL gesetzt da die liste im Moment ja noch leer ist.
Als nächstes versuche ich ein Element einzufügen :
Hier erstelle ich einfach ein neues Element und überprüfe ob an List->first schon ein Element steht falls nein weiß ich das die Liste leer ist und setze nun an betreffende Stelle mein neues Element. falls die liste nicht Lerr ist eben an letzte Stelle.
genau hier liegt anscheinend das Problem das Program spuckt mir bei ausführung immer segmentation fault entgegen. Was ja soviel bedeutet wie das er versucht auf einen ungültigen Speicherbereich zuzugreifen bzw auf etwas das nicht vorhanden ist und ich vermute Stark das meine If abfrage damit gemeint ist. Also ist die Frage wie greife ich auf das Element bzw das nicht vorhandene Element bei List->first zu ?
Als nächstes komme ich auch nicht so ganz mit der Iteration zu recht habe dazu folgende Funktion geschrieben:
Vermute aber das das auch Falsch ist kann es leider nicht prüfen da ich so weit eben gar nicht komm.
Wäre nett wenn mir jemand etwas auf die Sprünge helfen könnte.
Viele Grüße und Danke im Vorraus
ich schon wieder
Ich habe da mal ein paar fragen zur linked list...
Habe mir nun einige Beispiele Angeschaut zum Beispiel :
C-Programmierung: Verkettete Listen
http://de.wikibooks.org/wiki/C-Programmierung:_Verkettete_Listenhttp://perlgeek.de/de/artikel/einfach-verkettete-listen
und denke auch das ich diese gut verstanden habe.
Allerdings arbeiten diese Beispiele immer nur mit einem Èlment ich habe aber eine Liste an sich die ein letztes und erstes Element besitzt und ein Element das sieht so aus :
Code:
struct element
{
char d[20];
int val;
struct element* next;
};
struct list
{
struct element* first;
struct element* last;
};
Code:
void init(struct list *list)
{
list->first = NULL;
list->last = NULL;
}
Als nächstes versuche ich ein Element einzufügen :
Code:
void insert(struct list *list, int val, char* dat)
{
struct element *newelement;
struct list *list_itr = list;
newelement = malloc(sizeof(newelement));
newelement ->val = val;
if(list_itr->first == NULL)
{
list_itr->first = newelement;
}else
{
list_itr->last = newelement;
}
}
genau hier liegt anscheinend das Problem das Program spuckt mir bei ausführung immer segmentation fault entgegen. Was ja soviel bedeutet wie das er versucht auf einen ungültigen Speicherbereich zuzugreifen bzw auf etwas das nicht vorhanden ist und ich vermute Stark das meine If abfrage damit gemeint ist. Also ist die Frage wie greife ich auf das Element bzw das nicht vorhandene Element bei List->first zu ?
Als nächstes komme ich auch nicht so ganz mit der Iteration zu recht habe dazu folgende Funktion geschrieben:
Code:
void printlist(struct list *list)
{
struct list *l = list;
l = list;
if(l->first !=NULL)
{
while(l->first->next->next != NULL)
{
l=l->first->next->next;
printf("%d\n",l->val);
}
}
}
Wäre nett wenn mir jemand etwas auf die Sprünge helfen könnte.
Viele Grüße und Danke im Vorraus