AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verkettete Liste / Pointer , die Zweite
Thema durchsuchen
Ansicht
Themen-Optionen

Verkettete Liste / Pointer , die Zweite

Ein Thema von VeeJay · begonnen am 5. Jan 2003 · letzter Beitrag vom 5. Jan 2003
Antwort Antwort
VeeJay

Registriert seit: 3. Jan 2003
10 Beiträge
 
Delphi 7 Enterprise
 
#1

Verkettete Liste / Pointer , die Zweite

  Alt 5. Jan 2003, 19:33
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:
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.
Meine Lösungen:
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 .
Was mir selbst schon aufgefallen ist, ist das sich Aufgabe 5 und 6 irgendwie gleich anhören...

Viel Spass und vielen Dank
VeeJay
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#2
  Alt 5. Jan 2003, 22:01
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:
          +--------+
kopf----->|  next--+----->(nil)
          +--------+
          | inhalt |
          +----+---+
               |
              \|/
          +----+-----------------------------------+
          |"was auch immer in Edit1.Text stand..." |
          +----------------------------------------+
(Strings sind ja auch Zeiger (seit Delphi 2.0), deswegen liegen die außerhalb des "Hauptkasten" - der ist sozusagen sein Record-Type)

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
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#3
  Alt 5. Jan 2003, 22:09
@VeeJay: Kannst dir auch nochmal dein altes posting anschauen, dort habe ich einige der am meisten gebrauchten Proceduren im Zusammenhang mit verketten Listen gepostet.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
VeeJay

Registriert seit: 3. Jan 2003
10 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 5. Jan 2003, 23:17
@fiasko: Danke für die Hilfe, die Sources sind bei uns standartmäßig so toll programmiert und formatiert
@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 !
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz