Keybee Geschrieben 19. April 2002 Geschrieben 19. April 2002 Hi! Ich befinde mich in der Ausbildung zu Fachinformatiker/Anwendungsentwicklung. Mein Ausbilder hat mir eine Aufgabe gestellt, in der es um verkettete Listen geht. (C++) Leider habe ich davon keine Ahnung. Ich weiß nur, dass das was mit Pointern zu tun hat. Kennt sich jemand damit aus? Danke schonmal! Zitieren
Goos Geschrieben 19. April 2002 Geschrieben 19. April 2002 Na du bist lustig Du schreibst hier zwar was, aber eigentlich hast du keine wirkliche Frage gestellt. Also ueberleg dir doch mal ob du irgendwas genaues wissen willst. Auf deine bisherige Frage kannst ja hoechstens Antworten wie ja und nein bekommen, aber das hilft dir wohl nicht weiter Goos Zitieren
Keybee Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 Ja hast ja Recht... Könnte mir denn jemand mal ein Beispiel schicken oder so? (KNETH@WEB.DE) Das wär schon ne riesen Hilfe. Zitieren
Goos Geschrieben 19. April 2002 Geschrieben 19. April 2002 Wie waers denn, wenn wir es andersrum machen? Einfach irgendein Beispiel ist wohl schwierig Du koenntest ja mal die Aufgabe Posten die du gestellt bekommen hast, oder zumindest einen Teil davon, oder alternativ kannst doch auch einfach mal versuchen die Aufgabe zu lösen und dich dann hier wieder melden, wenns irgendwo haengt. Goos Zitieren
Keybee Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 Ja, aber ich steig da so "generell" nicht durch. Ich hab wirklich keine Ahnung von NIX. Zitieren
Goos Geschrieben 19. April 2002 Geschrieben 19. April 2002 Ja aber ich hab halt auch kein Beispiel ...das Beispiel hast wohl du als Aufgabe gestellt bekommen. Mir faellt da auf die schnelle leider auch nix zu ein. Goos Zitieren
Keybee Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 Das ist schade. Hast du denn keine Infos darüber? Gar nix? Ich steig da nämlich überhaupt nicht durch. Zitieren
Goos Geschrieben 19. April 2002 Geschrieben 19. April 2002 Hab dir mal n kleines Beispiel gemailt Goos Zitieren
DocJunioR Geschrieben 22. April 2002 Geschrieben 22. April 2002 Schön, dass ihr Beispiele mailt, aber es gibt noch andere, die das nicht verstehen (bei mir hat's Monate gedauert) Nehmen wir mal die Datenstruktur Person: typedef struct s_person { char name[50]; }; Da wird jetzt mal ein Rahmen drum rumgebastelt: typedef struct s_person_liste { s_person data; s_person_liste *next; }; next ist ein Pointer, der immer auf das darauffolgende Objekt zeigt So, definiert wird das Ganze im Programm dann so: void main (void) { s_person_liste *Liste; Liste = NULL; ... } Das NULL ist wichtig, da man sonst nicht überprüfen kann, ob man am Ende der Liste ist. Um ein Objek ranzuhängen kommt iene Funktion wie diese (Rekursiv sieht's geiler aus, versteht aber kein Schwein auf anhieb) void anhaengen (char *Name, s_person_liste *L) { s_person_liste *P = L; while ( P->next != NULL) // finden des letzten elements { P = P->next; } P->next = new s_person_liste; P=P->next; strcpy((char *)P->Data.Name, Name); // anhängen der Daten P->next = NULL; // terminieren der Liste } so, nun fehlt noch das Löschen. Hierzu muss erst das Objekt gesucht werden. anschließend merken wir uns dessen Nachfolger und klemmen den an den Vorgänger an, damit die Liste vollständig bleibt. Dann kann man das Objekt löschen: void loeschen (char *Name, s_person_liste *L) { char found =0 s_person_liste *P, *N; P = L; N = P; while (! found) { if (strcmp(Name,(char *)P->Name != 0) { N = P; // N hängt immer 1 Element hinter P P = P->next; } else if (P = NULL) found = 2; else found = 1; } // Name gefunden oder auch nicht.. if (found == 1) { N->next = P->next; // Zeiger umbiegen delete P; // P löschen } } So, das wär's eigentlich. das Suchen von Elementen ist in der Löschfunktion ja schon mit drin. Allerdings hab ich den Code nicht durchtesten können. somit sind alle Angaben ohne Gewehr! Sowas sollte übrigens in der FAQ stehen... cYa DjR Zitieren
Goos Geschrieben 22. April 2002 Geschrieben 22. April 2002 und wenn jemand noch die Theorie braucht zu einfach und doppelt verketteten Listen, dann kann er mal hier schaun Verkettete Listen Goos Zitieren
Orffi Geschrieben 22. April 2002 Geschrieben 22. April 2002 Erst letztens hatten wir eine Diskusion zu void main (void). Unter die main-Funktion im Standard kann man nachlesen, daß void main (void) weder Standard C noch Standard C++ ist. Jan Zitieren
Goos Geschrieben 22. April 2002 Geschrieben 22. April 2002 Na das is beim Thema verkettete Listen aber very OT find ich....ich glaub nicht, dass das hier in diesem Thread jemanden interessiert. :OD Goos Zitieren
DocJunioR Geschrieben 22. April 2002 Geschrieben 22. April 2002 @ Orffi: Ich gebe zu, du hast recht. Aber mal abgesehen davon, dass ich seltenst Kommandozeilenparameter benutze, hab ich ja sonst meine heißgeliebten Templates :-) cYa DjR Zitieren
Orffi Geschrieben 22. April 2002 Geschrieben 22. April 2002 @Goos: Wir sind hier im C/C++-Forum. Und void main ( void ) ist kein C/C++! Es ist also nicht OT. Und es sollte wirklich jeden interessieren, daß er richtigen Code schreibt und das in jedem Thread. @DocJunioR: Meine Bemerkung sollte eigentlich auch nur am Rande erscheinen und sollte nichts an Deiner Lösung schmälern. Eine Frage hätte ich aber doch: Aber mal abgesehen davon, dass ich seltenst Kommandozeilenparameter benutze,... Es hat nichts mit Kommandozeilenparametern zu tun. int main (void) ist sehr wohl Standard. Ich bezog mich auf das erste void (void main (void)). Der Standard sagt, man muß einen int zurückliefern. Jan Zitieren
Klotzkopp Geschrieben 23. April 2002 Geschrieben 23. April 2002 So, nun kommt aber wieder zum Thema zurück. Die Diskussion, ob void main (Jehova!) OnT ist oder nicht, hat nichts mit verketteten Listen zu tun. Noch zwei Hinweise zu verketteten Listen aus eigener Erfahrung: - Es ist allgemein einfacher, neue Elemente vorn anzuhängen. - beim Zugriff aus mehreren Prozessen/Threads muss man bei vL besondere Vorsicht walten lassen. Zitieren
DocJunioR Geschrieben 23. April 2002 Geschrieben 23. April 2002 *lol* siehste, ich und meine Templates.. war mir garnicht aufgefallen, dass ich ohne Rückgabewert arbeite.. tja, nobody is perfect, aber ich arbeite dran... cYa DjR Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.