Advertisement
apfel2kuchen

Liste Sortieren :>

Feb 11th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. program listePreNext (input, output);
  2. type
  3. tRefListe = ^tListe;
  4. tListe = record
  5. Info : integer;
  6. next : tRefListe;
  7. prev : tRefListe;
  8. end;
  9.  
  10. var
  11. Anfangszeiger,
  12. pZeiger : tRefListe;
  13. Feldgrosse,
  14. i,
  15. EingabeWert : Integer;
  16.  
  17. procedure Sortieren (var ioListenAnfang : tRefliste);
  18. var
  19. Zeiger,
  20. Backup : tRefListe;
  21. Durchlauf : tRefListe;
  22.  
  23. begin
  24. Zeiger := ioListenAnfang;
  25. while Zeiger^.Next <> NIL do
  26. begin
  27. if Zeiger^.Info < Zeiger^.Next^.Info then
  28. Zeiger := Zeiger^.next
  29. else if (Zeiger^.Info > Zeiger^.Next^.info) then { Am Anfang Einfügen oder suchen wo}
  30. begin
  31. Backup := Zeiger^.Next;
  32. if Backup^.Info < ioListenanfang^.Info then
  33. begin
  34. writeln ('Drinnen');
  35. Zeiger^.Next := Backup^.Next;
  36. Backup^.Next := ioListenAnfang;
  37. ioListenAnfang := Backup;
  38. end
  39. else
  40. begin {Einfug Punkt suchen :D }
  41. Durchlauf := ioListenAnfang;
  42. While (Durchlauf <> Backup) and (Durchlauf^.Next^.Info < Backup^.Info) do
  43. begin
  44. Durchlauf := Durchlauf^.next;
  45. end;{WHILE PLATZ FINDEN}
  46. Zeiger^.Next := Backup^.Next;
  47. Backup^.Next := Durchlauf^.next;
  48. Durchlauf^.Next := Backup;
  49. end;
  50. end;
  51. end;
  52. end; {Function}
  53.  
  54. begin
  55. Anfangszeiger := NIL;
  56. Write ('Wie Lang soll die Liste sei: ');
  57. readln (Feldgrosse);
  58. for i := 1 to Feldgrosse do
  59. begin
  60. Write ('Info Wert: ');
  61. readln (EingabeWert);
  62. new (pZeiger);
  63. pZeiger^.Info := EingabeWert;
  64. pZeiger^.Next := Anfangszeiger;
  65. if Anfangszeiger <> NIL then
  66. Anfangszeiger^.prev := pZeiger;
  67. Anfangszeiger := pZeiger;
  68. end;
  69.  
  70. Sortieren (AnfangsZeiger);
  71. pZeiger := Anfangszeiger;
  72. while pZeiger <> NIL do
  73. begin
  74. writeln (pZeiger^.info);
  75. pZeiger := pZeiger^.next;
  76. end;
  77. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement