| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: linked list in c im Forum Code Kitchen, in der Kategorie Software Home; Anzeige hallo C Freunde! ich schon wieder Ich habe da mal ein paar fragen zur linked list... Habe mir nun ...
![]() |
| | #1 (permalink) |
| Registriert seit: 23.08.11 ![]() Likes: 0 | Anzeige 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://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 |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | Kannst du bitte die Codeabschnitte posten, die zu deinem Aufruf für insert führen? Ich habe die Vermutung, dass du evtl. list falsch übergibst. Am besten alles von der Deklaration der Variablen bis zum Aufruf von insert. /Edith meint noch, dass du den Fehler durch debuggen oder Debug-Ausgaben genauer einschränken solltest, also ob es wirklich die if-Abfrage ist oder doch einer der Blöcke danach. Geändert von lookshe (14.11.11 um 16:46 Uhr) |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 23.08.11 ![]() Likes: 0 | Hallo Lookshe! also hier mal meine main : Code: int main(void)
{
struct list *ll;
char dat[]={"1.6.2011"};
init(ll);
insert(ll, 3,dat);
//printlist(ll);
return 0;
} Code:
printf("%d",l->val); PS: Da ich nur über Gedit Programmiere habe ich keine Debug Funktion betreibe also das gute alte printf debuging |
| | |
| | #4 (permalink) |
| Registriert seit: 09.12.09 ![]() Likes: 0 | Was mir nur Mal so auffällt ist, dass deine Liste keinen Speicherbereich bekommt. "struct list *ll;" -> Der Zeiger zeigt auf einen undefinierten Speicherbereich und in init() befüllst du den auch noch mit ((long long) 0), ergo schreibst du _irgendwohin_. Also erst Mal die Liste initialisieren: "struct list *ll=malloc(sizeof(struct list));" sollte es tun. In deiner insert-Funktion ähnliches: Code: struct element *newelement;
newelement = malloc(sizeof(newelement)); Den Rest habe ich nur überflogen, an deiner insert-Funktion solltest du vielleicht noch eine Änderung machen, wenn es ein first-Element gibt, wird das last-Element überschrieben - ich nehme aber an, das hast du runtergekürzt oder noch nicht erweitert, um den Fehler einzugrenzen. mfg Thunder
__________________ B4 09 BA 08 01 CD 21 C3 48 61 6C 6C 6F 20 57 65 6C 74 21 24 |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| CVE Exploit Kit list | rat | (In)security allgemein | 1 | 30.06.10 10:37 |
| C++ list.remove | FTC | Code Kitchen | 4 | 09.11.07 16:22 |
| Apt-get sources.list zerschossen | f100d | Linux/UNIX | 2 | 25.10.07 16:59 |
| Bug-List? | Serow | (In)security allgemein | 8 | 17.11.06 14:29 |
| linked list frage (aus /usr/include/linux/list.h) | alpha | Code Kitchen | 2 | 12.09.05 17:40 |