| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
TobsenMH Gast
|
Verfasst am: 16. Aug 2005 18:31 Titel: Listenelement einfügen |
|
|
Es soll die Funktion ...fuege_list_element_hinzu(...) in C programmiert werden, die ein neues Listenelement in die Liste einfügt! Das neue Listenelement soll der Funktion in Form einer Zeigervariablen übergeben werden. Das neue Listenelement soll vor dem ersten Element der Liste eingefügt werden. Ist die Liste leer, soll das einzufügende Listenelement das erste Element der Liste werden.
ich habe mir dazu mal folgendes gedacht:
void fuege_list_element_hinzu (ELEMENT*neu){
if (head==NULL){
head=neu;
} else {
head = neu;
neu -> next = head -> next;
}
return ();
}
es wäre nett, wenn du ihr da mal kurz drüber gucken würdet!
DANKE :o) |
|
| Nach oben |
|
 |
|
|
kurellajunior Administrator

Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 17. Aug 2005 00:33 Titel: |
|
|
Dat funzt nicht. da Du den neuen schon zuweist, bevor du den alten Link umbiegst.
Es gilt immer, erst retten, dann neuzuweisen. Weißt Du was ich meine?
Mit | Code: | head = neu;
neu -> next = head -> next; |
Verweist der Übergebene auf sich selbst... _________________
 |
|
| Nach oben |
|
 |
m²

Anmeldungsdatum: 12.08.2005 Beiträge: 23
|
Verfasst am: 17. Aug 2005 10:45 Titel: |
|
|
du musst erst vom neuen element auf das listenelement zeigen, welches der kopf ist, dann das neue element als kopf definieren...
bei deinem code würde folgendes passieren:
anfangszusand:(z.b.)
head zeigt auf li1
lineu ist gegeben
in else passiert dann folgendes:
head zeigt auf lineu
lineu zeigt auf lineu
heißt:
du hast keinen zeiger mehr auf den rest der liste, das wars dann. also, wie kurella junior schon gesagt hat: erst retten, also
lineu zeigt auf li1
dann
head zeigt auf lineu,
ok?
grüße
m² _________________ Wasser zu Wein,
Öl zu Benzin,
Jesus war ein Biker!!! |
|
| Nach oben |
|
 |
m²

Anmeldungsdatum: 12.08.2005 Beiträge: 23
|
Verfasst am: 17. Aug 2005 10:48 Titel: |
|
|
da hab ich selbst noch ne frage:
ich versuche mich gerade etwas in C einzuarbeiten, ich möchte ein programm für einen GTR schreiben...
was genau macht diese zeile, was heißen dort die zeichen?
| Code: | | neu -> next = head -> next; |
_________________ Wasser zu Wein,
Öl zu Benzin,
Jesus war ein Biker!!! |
|
| Nach oben |
|
 |
kurellajunior Administrator

Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 17. Aug 2005 13:54 Titel: |
|
|
"->" ist die Entsprechung des Punktes bei Pointern.
Wenn Du ein Objekt hast, sprichst Du Eigenshcaften und Funktionen mit Punkt "." an.
Hast Du einen Pointer auf dieses Objekt, dann musst Du den Pfeil verwenden "->"
In java wird dieser Unsinn aufgelöst, weil es nur noch Pointer gibt und alles mit Punkt gemacht wird. _________________
 |
|
| Nach oben |
|
 |
TobsenMH Gast
|
Verfasst am: 17. Aug 2005 14:12 Titel: |
|
|
danke für eure hilfen... habe mir gedanken darüber gemacht und das ist dabei rausgekommen:
| Code: | void fuege_list_element_hinzu (ELEMENT*neu){
ELEMENT *ptr;
if (head==NULL){
head=neu;
} else {
ptr = head;
head = neu;
neu->next = ptr;
}
return ();
} |
|
|
| Nach oben |
|
 |
kurellajunior Administrator

Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 17. Aug 2005 18:35 Titel: |
|
|
Besser,
Optimierungsvorschlag
| Code: | void fuege_list_element_hinzu (ELEMENT*neu){
if (head==NULL){
head=neu;
} else {
neu->next = head;
head = neu;
}
return ();
} |
_________________
 |
|
| Nach oben |
|
 |
|