Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » frage zu linearen liste und einfügen in selbige

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.01.2006, 21:48 Uhr
~hotwatermusic
Gast


nabend schön. ich hab nen problem wo ich nicht weiterkomme. ich muss lineare listen verstehen, leider ist mein verständnis im bereich progammierung und c++ im allgemeinen eher naja begrenzt....
es geht um folgende funktion:




C++:


void einfuegVor(ZListEl &p, int i)
/* Einfügen neues Listenelement vor *p
   (MIT Kopieren, daher kein Parameter kopf nötig)
   NEU: Angabe p als Referenz, damit p auch nach dem Aufruf auf
   dasselbe (logische) Listenelement zeigt
*/

{
  ZListEl neu;// es wird ein objekt neu vom typ ZlistEL erzeugt

  neu=new ListEl;//neu wird jetzt speicherplatz zugewiesen mit den inhalten element i und
                       // einem zeiger weiter der auf das nächste elment zeigt
  *neu=*p;        // so wie ich es verstehe wird jetzt alles was im nachfolgendem element p
                      // in neu reinkopiert
  
  p->zahl=i;      //in p wird jetzt das element in reingeschrieben

  p->weiter=neu;//der weiterzeiger von p zeigt jetzt auf das neue element

  p=neu;   // Veränderung p (s. Kommentar)
}







der sinn dieser funktion ist es, in einer bestehenden linearen liste ein neues element, vor einem bestehenden element einzufügen.


sämtliche kommentare in diesem kurzen stückt quellcode sind von mir eingefügt

zur zeile: p->weiter=neu; vermute ich noch das dann ab dieser stelle, das neu in der liste einen platz weiterrutscht und p da es ja die elemente enthält die wir eintragen möchten nun das eigentlich einfuegVor() element ist.
jetzt frage ich mich allerdings was hat diese zeile zu bedeuten:p=neu?
wäre nett wenn mir wer helfen könnte
grtz und schönen abend noch
mr hwm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.01.2006, 21:52 Uhr
BorisDieKlinge



Also nach meiner ekenntnis funktioniert das kopieren mit

*neu=*p;
nicht!!

du musst glaub ich den =operator überladen. und darin jedes element der p Objektes
in das element des neu opjektees kopieren

angaben ohne gewähr hab das schon lang nicht m ehr gemacht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.01.2006, 21:57 Uhr
~Hotwatermusic
Gast


oh, das ist die lösung vom dozenten, die funktioniert;-) ich möchte lediglich wissen warum es das tut;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.01.2006, 22:00 Uhr
BorisDieKlinge



wie warum es das tu? jetzt seh ic haufm schlauch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.01.2006, 22:03 Uhr
~hotwatermusic
Gast


also, ich hab in dem quellcode hinter den zeilen meine vermutungen reingeschrieben was die einzelnen code-zeilen bewirken. ich weiss jedoch nicht ob meine interpretation des codes richtig ist vorallem, da cih die zeile:
p=neu;
nicht begreife:-(
hoffe ich hab mich jetzt einwenig präziser ausgedrückt;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.01.2006, 22:16 Uhr
BorisDieKlinge



die Zeile p=neu; irritiert bischen die ist glaub falsch, da du ja mit p-> weiter= neu; die referenz der neu-Objektes in p->weiter übergibts, und so zeig p->weiter auf das neu objekt;

wenn du nun noch p=new machst, wir die p referenz überschrieben mit der neu referenz . dh.h die p refenrez gibt es nicht mehr.. du hast kein zugriff mehr auf das obejkt das mit p refenzeirt wurde ....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.02.2006, 10:15 Uhr
~hotwatermusic
Gast



Zitat von borisdieklinge:
die Zeile p=neu; irritiert bischen die ist glaub falsch, da du ja mit p-> weiter= neu; die referenz der neu-Objektes in p->weiter übergibts, und so zeig p->weiter auf das neu objekt;

wenn du nun noch p=new machst, wir die p referenz überschrieben mit der neu referenz . dh.h die p refenrez gibt es nicht mehr.. du hast kein zugriff mehr auf das obejkt das mit p refenzeirt wurde ....


genau das verstehe ich nicht, da es funktioniert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: