Problem mit Funktion in einer verketteten Liste
-
Hallo,
ich habe mir just4Fun mal eine verkettete liste geschrieben. Die verkettete Liste funktioniert soweit auch ( es gibt eine add funktion, mit der man eine Struktur vom Typ LISTNODE ( Zeiger auf Vorgänger, Nachfolger, Daten ) in eine Struktur vom Typ LISTINFO ( begin, ende ) einfügen kann.
Wenn ich jetzt manuell meine Daten eintrage, dann klappt das auch. Nur wollte ich mir jetzt eine Funktion add_int schreiben, die das Erstellen des LISTNODES abnimmt und der man direkt konstante Werte übergeben kann.
Problem: Wenn ich die Funktion nutze, klappt nix mehr!!!
hier die Funktion:
int add_int ( list, data ) LISTINFO* list; int data; { LISTNODE this_node; if ( data == (LISTNODE*)NULL ) { return ERR_NULLPOINTER; } if ( list == (void*)NULL ) { return ERR_INVALID_LIST_POINTER; } this_node.data = &data; return add ( list, &this_node ); }
-
Dir ist schon klar, dass "LISTNODE list_node" nur innerhalb der Funktion lebt? Die Funktion add() mit einem Zeiger auf list_node aufzurufen bringt demnach nichts. Schau dir mal malloc() an, damit kannst du dir Speicher reservieren, der auch noch nach der Funktion gültig ist.
Und K&R-Funktionsdeklaration... tststs
Edit: Und das mit deinem data ist auch faul.
-
Ja gut....
Punkt 1 verstehe ich...
Punkt 2: das ist die Schreibweise bei mir auf der Arbeit
Punkt 3: Was soll mit dem Data faul sein?
-
Ist im Endeffekt dasselbe Problem. Du schreibst in this_node.data die Adresse von data innerhalb der Funktion.
Und was du mit "if ( data == (LISTNODE*)NULL )" versuchst ist mir auch nicht ganz klar. data ist ein Integer und du castest NULL in einen Zeiger auf eine Struktur? Das schluckt der Compiler?PS: Ihr macht das auf Arbeit so? Krass. Echt krass.
-
Naja bei uns auf der Arbeit die kommen noch aus der älteren Generation *rofl*
Das mit dem Int: Ist mir aufgefallen und natürlich is das Schwachsinn... Ich glaube der Compiler schluckt das nur wegen
#define NULL 0
-
fluxy schrieb:
#define NULL 0
Ist es in C nicht so?
#define NULL ( (void*) 0 )
-
TactX schrieb:
Ist im Endeffekt dasselbe Problem. Du schreibst in this_node.data die Adresse von data innerhalb der Funktion.
Und was du mit "if ( data == (LISTNODE*)NULL )" versuchst ist mir auch nicht ganz klar. data ist ein Integer und du castest NULL in einen Zeiger auf eine Struktur? Das schluckt der Compiler?Nicht nur das:
data ist ein int (soll wohl irgenteine Zahl darstellen), soweit, so gut, aber was hat eine solche Zahl primaer mit einem Pointer (Adresse) zu tun? Wenn einen Pointer gegen einen Pointer abfragen will, dann deklariere ich auch zwei Pointer, Frage ein int gegen ein int ab, deklariere ich auch zwei int.
-
Naja bei uns auf der Arbeit die kommen noch aus der älteren Generation *rofl*
Dann setz' Dich durch. Du mußt doch nicht allen Urschleim wiederkäuen. Wenn Du ernsthaft nur sowas lernst, hast Du nie 'ne Chance. Und alle, die von Dir lernen, werden sagen: "Naja bei uns auf der Arbeit die kommen noch aus der älteren Generation *rofl*"
Blackbird
-
zufaulzumeinloggen schrieb:
Naja bei uns auf der Arbeit die kommen noch aus der älteren Generation *rofl*
Dann setz' Dich durch. Du mußt doch nicht allen Urschleim wiederkäuen. Wenn Du ernsthaft nur sowas lernst, hast Du nie 'ne Chance. Und alle, die von Dir lernen, werden sagen: "Naja bei uns auf der Arbeit die kommen noch aus der älteren Generation *rofl*"
Öhm ich arbeite so gaanz zufällig bei der selben Firma wie fluxy, und kann solch ein Kommentar wie deines nur belächeln. Unsere Software wurde 1987 programmiert, meinst du die Milliarden von Zeilen Quellcode, die bis heute ohne Probleme, stabil und sicher ihren Dienst verrichten, wo ein make-Durchlauf fast 30 Minuten dauert, und mit denen jeder hier zurecht kommt, schreibt "mal eben" jemand neu, nur damit es kein K&R-Standard mehr ist? Nur damit es dem neumodischem entspricht? Ausserdem geht es hier um ein Problem und nicht darum, welchen Code-Stil er benutzt.
Also bitte ... es mag ja vielleicht sein das es jenseits deiner Vorstellungskraft liegt, das es noch Software gibt, die vor Windows 95 entwickelt wurde (auf Unix-Basis), aber solch ein Kommentar kannst du dir auch nächstes mal schenken. Und eine Chance hat man eher, wenn man verschiedene Standards beherrscht als nur diesem homogenen, Neumodischen kram.
~code_pilot
-
Darf fluxy auch an dieses Riesenprojekt dran?
-
*rofl*
-
Verarschen kannst dich alleine mein Lieber....
Guck du erstmal zu das du deine Grundschule schaffst und komm aus der Pupertät raus. Du bist sicher so nen komischer 15 jähriger Noob der mal eben in nem C Buch nachgeschlagen hat und denkt er sei jetzt Gott...
Naja wie es auch sei das Thema ist für mich abgeschlossen
-
*LOL* das sagt der Richtige.
-
Ja sicher wer bist du denn überhaupt?
-
Deine Mutter!
-
fluxy schrieb:
Verarschen kannst dich alleine mein Lieber....
Ich hoffe damit meinst du nicht mich.
-
fluxy schrieb:
Verarschen kannst dich alleine mein Lieber....
Ich hoffe damit meinst du nicht mich.
-
Idiot
-
TactX schrieb:
Idiot
*rofl*
-
:roll: schrieb:
Ich hoffe damit meinst du nicht mich.
ich hoffe damit meinst du nicht mich