Autor Beitrag
CyberStorm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WIN 98, WIN XP
D4 Prof, D6 Pers
BeitragVerfasst: Do 14.11.02 22:04 
Hi,

Habe folgendes Problem: Ich erzeuge eine verkettete Liste und fülle sie mit gr. Buchstaben (random(25) + 65). Bei der Eingabe funktioniert alles. Aber bei der Ausgabe in einer ListBox habe Ich am Ende immer wieder ein gleichen Char (z.B. 'h').

Quelltext:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
type PKnotenLink = ^TKnoten;
  TKnoten = record
    Inhalt : Char;
    Next   : PKnotenLink;
    Last   : PKnotenLink;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i   : Byte;
  Tmp : PKnotenLink;
begin
  First_Knoten^.Inhalt := #0;
  First_Knoten^.Next   := Knoten;
  First_Knoten^.Last   := nil;

  Knoten^.Last := First_Knoten;

  for i := 1 to 26 do
    begin
      Knoten^.Inhalt := char(random(25) + 65);
      Tmp := Knoten;
      New(Knoten);
      Knoten^.Last := Tmp;
      Tmp^.Next := Knoten;
    end;

  Knoten^.Next := Last_Knoten;

  Last_Knoten^.Inhalt := #0;
  Last_Knoten^.Next   := nil;
  Last_Knoten^.Last   := Knoten;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i : Byte;
begin
  Knoten := First_Knoten;
  Knoten := Knoten.Next;

  i := 1;

  repeat
    ListBox1.Items.Add(IntToStr(i) + '   ' + Knoten.Inhalt);
    inc(i);
    Knoten := Knoten^.Next;
  until Knoten.Next = nil
end;


Mfg Cyber$torm
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 15.11.02 10:22 
Eine Frage vorweg: Hast Du Randomize vor dem ersten Aufruf von Random aufgerufen?

Gruß
TINO
CyberStorm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WIN 98, WIN XP
D4 Prof, D6 Pers
BeitragVerfasst: Fr 15.11.02 23:47 
Hi,

Ja - habe Ich
CyberStorm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WIN 98, WIN XP
D4 Prof, D6 Pers
BeitragVerfasst: Sa 16.11.02 00:37 
Hi,

Habe mein Fehler gefunden. Das Erstellen und Auslesen funtzt jetzt. Nun will Ich die Inhalte sortieren lassen mit Bubblesort. Aber irgentwie läßt er immer die letzten Blöcke weg.

procedure TForm1.Button4Click(Sender: TObject);
var
i,e,o : Integer;
Tmp1 : PKnotenLink;
Tmp2 : PKnotenLink;
Temp : Char;
begin
Knoten := First_Knoten;
Knoten := Knoten^.Next;

o := 0;

while not (Knoten^.Next = nil) do
begin
inc(o);
Knoten := Knoten^.Next;
end;

Knoten := First_Knoten;
for i := 1 to o do
begin
Knoten := Knoten^.Next;
Tmp1 := Knoten;
for e := 1 to (o-i) do
begin
Tmp2 := Tmp1^.Next;
If (ord(Tmp1^.Inhalt) > ord(Tmp2^.Inhalt)) Then
begin
Temp := Tmp1^.Inhalt;
Tmp1^.Inhalt := Tmp2^.Inhalt;
Tmp2^.Inhalt := Temp;
end;
Tmp1 := Tmp1^.Next;
end;
end;
end;

Jemand eine Idee

Mfg Cyber