Advertisement
apfel2kuchen

LineareListe - Sortiert ausgeben

Dec 1st, 2014
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. program eigeneListe (input, output);
  2.  
  3. type
  4. tRefListe = ^tListe;
  5. tListe = record
  6. Info : Integer;
  7. next : tRefListe;
  8. end;
  9. var
  10. RefListe,
  11. first : tRefListe;
  12.  
  13. procedure ListeEinlesen (var iOutRefliste : tRefliste);
  14. var
  15. eingabe : char;
  16. wert : integer;
  17.  
  18. begin
  19. repeat
  20. Write ('Ist es eine Leere Liste? Tippen Sie "y" = yes und "n" = no: ');
  21. readln (Eingabe);
  22. until (eingabe = 'y') or (eingabe = 'n');
  23. if eingabe = 'y' then
  24. begin
  25. repeat
  26. Write ('Geben Sie einen Wert des Listenelementes ein >= 0, Eingabe Beenden mit -1: ');
  27. readln (wert);
  28. if wert >= 0 then
  29. begin
  30. new (iOutRefliste);
  31. iOutRefliste^.Info := Wert;
  32. iOutRefliste^.Next := first;
  33. writeln (iOutRefliste^.Info);
  34. end;
  35. first := iOutRefliste; {First zeigt auf das Zuletzt eingegebene}
  36. until wert <= 0;
  37. Writeln ('Einlesen wurde Beendet')
  38. end {If (Y) --> Liste hat Werte!}
  39. else
  40. iOUtRefliste := NIL;
  41. end;
  42.  
  43. procedure ListeAusgeben (inRefliste : tRefListe);
  44. begin
  45. {inRefListe zeigt auf das Erste ListenElement}
  46. Writeln ('>> Ausgabe der Liste <<');
  47. while (inRefliste <> NIL) do
  48. begin
  49. writeln (inRefliste^.Info);
  50. inRefliste := inRefliste^.Next;
  51. end;{WHILE ---> Ende der Liste}
  52. end;{Ende Procedure Ausgabe}
  53.  
  54.  
  55. procedure ListeSortieren (var iOutRefliste : tRefListe);
  56. var
  57. Zeiger : tRefListe;
  58.  
  59.  
  60. procedure amAnfangEinfug (var ListeAnfang, VorEinfuegElement : tRefListe);
  61. var
  62. Hilfszeig : tRefListe; {Zeigt auf das Einzufügende Element}
  63. begin
  64. Hilfszeig := VorEinfuegElement^.Next;
  65. VorEinfuegElement^.Next := VorEinfuegElement^.Next^.Next;
  66. Hilfszeig^.Next := ListeAnfang;
  67. ListeAnfang := Hilfszeig;
  68. end; {Ende Procedure amAnfangEinfügen}
  69.  
  70.  
  71. procedure SuchenEinfueg (var ListeAnfang, vorEinfuegElement : tRefListe);
  72. var
  73. SuchZeig : tRefListe;
  74. hilfszeig : tRefliste;
  75. begin
  76. SuchZeig := ListeAnfang;
  77. {Liste durchsuchen}
  78. while vorEinfuegElement^.next^.info > Suchzeig^.next^.info do
  79. SuchZeig := SuchZeig^.next;
  80.  
  81. hilfszeig := vorEinfuegElement^.next; {Kopiert die Zukopierende Zahl}
  82. vorEinfuegElement^.Next := hilfszeig^.Next; {Voreinfugelement Zeigt auf NIL --> 10 Abgehandelt}
  83.  
  84. hilfszeig^.Next := SuchZeig^.Next; {7 Soll auf 9 Zeigen}
  85. Suchzeig^.Next := hilfszeig; {2 Zeigt auf 7}
  86.  
  87. end; {Einfuegen}
  88.  
  89.  
  90.  
  91.  
  92.  
  93. begin
  94. Zeiger := IOutRefliste;
  95. if (IOutRefliste = NIL) then
  96. writeln ('Die Liste ist leer')
  97. else
  98. begin
  99. while (zeiger^.Next <> NIL) do
  100. begin
  101. writeln ('IN WHILE');
  102. {Fall 1: IOutRefliste > Kleiner als nächstes Element, dann mache nichts }
  103. if Zeiger^.Next^.Info >= Zeiger^.Info then
  104. begin
  105. writeln ('Es wird nichts verändert');
  106. zeiger := zeiger^.Next;
  107. end {If es muss nichts geändert werden}
  108. else
  109. begin
  110. if Zeiger^.Next^.Info < iOutRefliste^.info then
  111. begin
  112. writeln ('ICH BIN IM IF');
  113. AmAnfangEinfug(IOutRefliste, Zeiger);
  114. end
  115. else
  116. begin
  117. writeln ('ICH GEHE IN SUCHEN EINFÜGE');
  118. SuchenEinfueg (IOutRefliste, Zeiger);
  119. end;
  120. end; {Else -> Die liste musste geändert werden}
  121.  
  122. end; {While Schleife}
  123. end; {Ende Else (Liste nicht leer)}
  124. first := iOUtRefliste;
  125. end; {ListeSortieren}
  126.  
  127.  
  128.  
  129. begin
  130. first := nil;
  131. ListeEinlesen (Refliste);
  132. ListeSortieren (Refliste);
  133. writeln ('Noch nicht gecrasht');
  134.  
  135. ListeAusgeben (Refliste);
  136.  
  137.  
  138. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement