![]() |
Verkettete Liste / Pointer , die Zweite
Hi Leute,
nachdem ihr mir vorher die Grundlagen der Pointer erklärt habt, habe ich mich jetzt an die "schwereren" Aufgaben getraut und wollte wissen, ob ich sie richtig gelöst habe / bzw. ob es bessere Lösungen gibt. Aufgaben: 1.) Wie sieht die Zeigerkette beim Aufruf von Formcreate aus ? 2.) Was macht die Prozedur fuegean (erkläre ausführlich) ? 3.) Skizziere die Kette nach dem 1.Aufruf von fuegean ! 4.) Wie sieht die fertige Kette aus ? 5.) Erkläre genau die Prozedur Button2click ! 6.) Was erscheint in Edit2 als Text ?
Delphi-Quellcode:
Meine Lösungen:
unit Unit1; //Zeigerverkettet
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Edit4: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.DFM} //----------------------------------------------------- Type tzeiger=^element; element=Record inhalt:string; next:tzeiger end; Var kopf,hilf:tzeiger; //----------------------------------------------------- procedure TForm1.FormCreate(Sender: TObject); begin kopf:=NIL; end; procedure fuegean(s:string); begin new (hilf); hilf^.inhalt:=s; hilf^.next:=kopf; kopf:=hilf; end; procedure TForm1.Button1Click(Sender: TObject); begin fuegean(edit1.text); fuegean(edit2.text); fuegean(edit3.text); edit4.text:='ok Kette fertig'; end; procedure TForm1.Button2Click(Sender: TObject); Var hilf:tzeiger ; s:string; begin s:=kopf^.inhalt; hilf:=kopf^.next; s:=s+hilf^.inhalt; hilf:=hilf^.next; s:=s+hilf^.inhalt; edit4.text:=s; end; end. 1.) Die Kette besteht aus einem Glied("kopf"), das keinen Inhalt hat und dessen Pointer auf NIL zeigt. 2.) Fuegean reserviert einen Platz im Speicher für das Kettenglied "Hilf". Diesem Kettenglied wird der Inhalt "s" zugeordnet, sowie ein Pointer auf das Kettenglied "Kopf". Daraufhin wird "Hilf" selbst zum "Kopf" 3.) kein Plan 4.) Die Kette besteht aus dem letzten Glied "Kopf(kein Inhalt/Zeiger auf NIL)" davor das Glied Hilf(edit3.text/Zeiger auf Kopf), davor wieder ein Hilf(edit2.text/Zeiger auf Hilf) und noch ein Hilf(edit1.text/Zeiger auf Hilf). 5.)Die Texte aus Edit 1-3 werden in umgekehrter Reihenfolge in Edit 4 herausgegeben. 6.)(Nehme an ein Fehler in der Aufgabenstellung / Edit 4 wäre sinnvoller, da Edit2 User-abhängig ist ;) ) In Edit 4 stehen die Texte der drei anderen Edit-Felder in folgender Reihenfolge edit3,edit2,edit1 Sooo, ich würde mich über jede Kritik zu meinen Lösungen freuen. Ihr könnt sie ruhig in der Luft zerreissen, denn für die Arbeit muss ich ja wissen, wie es richtig gemacht wird :angle2: . Was mir selbst schon aufgefallen ist, ist das sich Aufgabe 5 und 6 irgendwie gleich anhören... Viel Spass und vielen Dank VeeJay |
Hallo,
toll wie der Quelltext formatiert ist... und wie man jetzt Zeiger mit T am anfang schreibt... also mal ein paar Kommentare: 1.) Würde noch hinschreiben, das damit die Liste Leer ist. 2.) Wird also ein Element an die Liste vorne drann gesetzt. 3.) Der meint sowas:
Code:
(Strings sind ja auch Zeiger (seit Delphi 2.0), deswegen liegen die außerhalb des "Hauptkasten" - der ist sozusagen sein Record-Type)
+--------+
kopf----->| next--+----->(nil) +--------+ | inhalt | +----+---+ | \|/ +----+-----------------------------------+ |"was auch immer in Edit1.Text stand..." | +----------------------------------------+ 4.) würde ich wie brei 3. in solchen Kästchen malen, hilf hat da nix zu suchen. Das ist ja nur ein Zeiger, der für die Liste unwichtig ist (wird ja nur beim einfügen kurz gebraucht). Du gehst jetzt natürlich davon aus, das jemand auf Button1 geklickt hat (und das die Events verknüpft sind, steht ja aber garnich in der Aufgabenstellung ;-) ) 5.) jup 6.) *rotfl* Soweit siehts doch ganz OK aus... viel Glück noch... Thomas |
@VeeJay: Kannst dir auch nochmal dein altes posting anschauen, dort habe ich einige der am meisten gebrauchten Proceduren im Zusammenhang mit verketten Listen gepostet.
|
@fiasko: Danke für die Hilfe, die Sources sind bei uns standartmäßig so toll programmiert und formatiert :cry:
@salomon: Ich hatte deinen Post schon gelesen. Das sind bestimmt die Lösungen für Aufgaben, die in der Klausur kommen. Da kommt meistens Suchen, Einfügen und Löschen ;) Ist auf jeden Fall ne super Hilfe Falls noch jemand anderes Verbesserungsvorschläge für meine Lösungen hat, einfach losposten ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz