Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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!

Na du bist lustig :D

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

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.

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

Ja, aber ich steig da so "generell" nicht durch.

Ich hab wirklich keine Ahnung von NIX.

Das ist schade.

Hast du denn keine Infos darüber? Gar nix?

Ich steig da nämlich überhaupt nicht durch.

Jo!

Danke!

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

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

@ 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

@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

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.

*lol*

siehste, ich und meine Templates..

war mir garnicht aufgefallen, dass ich ohne Rückgabewert arbeite..

tja, nobody is perfect, aber ich arbeite dran... :D

cYa

DjR

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.