HILFE: Lineare Listen!!!
-
flow21 schrieb:
ich kann eher anhand von praxis lernen anstatt theortischen kram zu lesen.
Dann sitzt du im Studium vollkommen falsch, und solltest dringend in eine Ausbildung wechseln. Ein Studium enthält zwangsläufig Theorie, und man erwartet sogar von dir, das du dir Wissen selbst aneignen kannst.
flow21 schrieb:
struct milchprod {
milchdaten mprod; <--- hier legt der doch eine neuen datentyp im structformat an wie zum beispiel ein int x aber wieso?
struct milchprod* next;}; <---und was macht der da?1. Du willst doch Daten speichern, also müssen diese irgendwo stehen.
Du willst Daten vom Typ "milchdaten" speichern. Diese müssen also in jedem Element wiederholt werden. Deine Liste besteht aus Elementen des Typs "milchprod", demzufolge muss hier die "milchdaten" stehen. Jede Instanz von milchprod stellt nun ein Element deiner Liste dar.2. Damit du mehrere in Folge speichern kannst, musst du diese auch verknüpfen.
Irgendwie musst du ja deine Daten miteinander verbinden. Das erste Element zeigt bei einer einfach verketteten Liste immer auf das zweite, das zweite auf das dritte...Eine Schreibweise ist aber unter C++ unüblich (nachfolgend auskommentiert):
struct milchprod { milchdaten mprod; /* struct */ milchprod* next; };
Nun gehen wir mal schrittweise ein stumpfes Beispiel durch:
Du beginnst mit einer Leeren liste:
milchprod * first = NULL; // Es existiert kein Element.
nun legen wir ein Element an:
first = new milchprod; first->mprod = /*...*/; // Das erste Element setzen first->next = NULL; // Noch existiert kein nachfolger
Wenn wir ein weitere Element einfügen, hängen wir es an das Letzte element der bestehenden Liste hinten an:
first->next = new milchprod; first->next->mprod = /*...*/; // Das zweite Element setzen first->next->next = NULL; // Noch existiert kein Nachfolger vom zweiten
Natürlich will man das ganze dynamischer gestalten, und versucht das ganze daher zu verallgemeinen (Mittels schleifen bis zum letzen Element hangeln, dort dann next mit dem nächsten Element füllen...).
-
asc schrieb:
flow21 schrieb:
ich kann eher anhand von praxis lernen anstatt theortischen kram zu lesen.
Deswegen bin ich an die FH gegangen das ist genau mein Ding, nur habe ich leider einen Prof erwischt der es vorzog sich sehr ausgiebig mit kleineren Dingen wie if,while usw vorzog und die Listen gegen Ende einfach mal einschob und wir sollten es mal selbst rausfinden...
Deine Ausführungen haben mir sehr geholfen. Vielen Dank!
-
flow21 schrieb:
für alle die meinten ich bräuchte die lösunge hier ist sie
Okay, der Code entspricht auch wirklich nicht der üblichen Verwendung einer einfach verketteten Liste. Er wiederspricht allen Regeln von sinnvoller Codetrennung und Wiederverwendbarkeit. IMHO ist dadurch das ganze auch schwerer zu verstehen.
Wenn der Code von deinem Dozenten stammt, so möchte ich gerne mal wissen, ob dieser jemals in seinen Leben Code innerhalb eines echten Projektes geschrieben hat.
cu André
P.S: Ich habe leider keine Zeit derzeit irgendwas zu erklären, vielleicht später am Abend (Vor 20-21 Uhr ist damit aber nicht zu rechnen).
-
flow21 schrieb:
asc schrieb:
flow21 schrieb:
ich kann eher anhand von praxis lernen anstatt theortischen kram zu lesen.
Deswegen bin ich an die FH gegangen das ist genau mein Ding,...
Die FH mag praxisorientierter als eine Uni sein, dennoch ist auch hier die Theorie entscheidend. Selbst in einer Ausbildung ist Theorie noch teilweise wichtig, nur das letztere wohl das Praxisnächste vor der eigentlichen Praxis ist...
-
asc schrieb:
flow21 schrieb:
asc schrieb:
flow21 schrieb:
ich kann eher anhand von praxis lernen anstatt theortischen kram zu lesen.
Deswegen bin ich an die FH gegangen das ist genau mein Ding,...
Die FH mag praxisorientierter als eine Uni sein, dennoch ist auch hier die Theorie entscheidend. Selbst in einer Ausbildung ist Theorie noch teilweise wichtig, nur das letztere wohl das Praxisnächste vor der eigentlichen Praxis ist...
Also bisher muss ich sagen wird einem alles super erklärt.
Es mag sein, das manche Vorlesungen echt verwirrend sind doch anhand der Übungen wird es einen sehr gut erläutert. Bis auf diese Listen läufts bisher gut.
Nur hatte ich Probleme wie man eine Liste anlegt, das ganze verbindet und den Anker setzt(Zeiger auf Ende oder Anfang)
-
flow21 schrieb:
...
Hast du dir dennoch meine kurze Ausführung oben angeschaut (Unterhalb von deinem Codeauszug, den du übrigens in die cpp-Tags schreiben solltest)? Bezieht sich aber nicht auf den Code, da ich vorher angefangen habe zu tippen.
-
asc schrieb:
flow21 schrieb:
...
Hast du dir dennoch meine kurze Ausführung oben angeschaut (Unterhalb von deinem Codeauszug, den du übrigens in die cpp-Tags schreiben solltest)? Bezieht sich aber nicht auf den Code, da ich vorher angefangen habe zu tippen.
Da steht ja auch "hatte". Denn hab ich mir angeschaut und mit diesen kleinen Schnipselchen versuch ich mich da etz noch durchzuringen. Aller Anfang ist schwer!
-
Vielleicht hilft der dieser Thread auch weiter.
Es geht darin zwar um Klassen sowie nicht einer einfach verketteten Liste sondern einen Stack, aber darin habe ich auf der 2ten Seite noch sehr ausführlich etwas geschrieben (Ich bin mir auch sicher ich noch irgendwo anders eine ellenlange Erklärung für eine einfach verkettete im Forum hatte, ich finde sie nur nicht auf anhieb).
cu André
-
asc schrieb:
Vielleicht hilft der dieser Thread auch weiter.
Es geht darin zwar um Klassen sowie nicht einer einfach verketteten Liste sondern einen Stack, aber darin habe ich auf der 2ten Seite noch sehr ausführlich etwas geschrieben (Ich bin mir auch sicher ich noch irgendwo anders eine ellenlange Erklärung für eine einfach verkettete im Forum hatte, ich finde sie nur nicht auf anhieb).
cu André
Ne Klassen(haben wir mal angesprochen, kommt wenn dann erst zu ProgII) und Stack noch gar nicht...
Ich denk ich nutze meine Hilfsmittelliste um mir 2 Klausuraufgaben da aufzuschreiben und mir dann alles zusammenzureimen:D
dennoch vielen dank für die Mühe!
-
Also um Klassen zu kapieren braucht es wirklich nicht viel. (Die Feinheiten sind schon nicht immer so trivial, aber das Grundkonzept hat man schnell Begriffen).
Und ein Stack ist auch nichts wirklich kompliziertes. Imo sogar einfacher, als eine Liste. (Darum ists ja auch "nur" ein Adapter auf einen normalen Container. ;))