Advertisement
apfel2kuchen

Fernuni 3.3 - Lösung

Nov 18th, 2014
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. program TesteAnhaengen (input, output);
  2. { testet die Prozedur anhaengen }
  3.  
  4. type
  5. tRefListe = ^tListe;
  6. tListe = record
  7. info : integer;
  8. next : tRefListe
  9. end;
  10.  
  11. var
  12. Liste1,
  13. Liste2,
  14. Gesamtliste : tRefListe;
  15.  
  16.  
  17. procedure anhaengen ( inRefAnfang1,
  18. inRefAnfang2 : tRefListe;
  19. var outRefAnfang : tRefListe);
  20. { Haengt die lineare Liste mit Anfangszeiger inRefAnfang2 an
  21. die Liste mit Anfangszeiger inRefAnfang1 an.
  22. Zurueckgegeben wird outRefAnfang, der Anfangszeiger der Ergebnisliste. }
  23. var
  24. first : tRefListe;
  25. Ok1,
  26. ok2 : boolean; {Fuer liste1 und liste2 -> Wenn TRUE dann ist Liste nicht leer}
  27.  
  28. begin
  29. if inRefAnfang1 = NIL then
  30. Ok1 := FALSE
  31. else
  32. ok1 := TRUE;
  33. if inRefAnfang2 = NIL then
  34. ok2 := FALSE
  35. else
  36. ok2 := TRUE;
  37.  
  38. if (OK1 = TRUE) then
  39. begin
  40. first := inRefAnfang1;
  41. while not (inRefAnfang1^.Next = NIL) do
  42. begin
  43. inRefAnfang1 := inRefAnfang1^.Next;
  44. writeln (inRefAnfang1^.Info);
  45. end; {While}
  46. if (OK1 = TRUE) AND (OK2 = TRUE) then
  47. inRefAnfang1^.Next := inRefAnfang2;
  48. inRefAnfang1 := first;
  49. OutRefAnfang := inRefAnfang1;
  50. end {WHILE Schleife}
  51. else if (OK2 = TRUE) then
  52. OutRefAnfang := inRefAnfang2;
  53.  
  54. end;
  55. procedure LiesListe(var outListe : tRefListe);
  56. { Liest eine (evtl. leere) Liste ein und gibt deren Anfangszeiger outListe zurueck. }
  57.  
  58. var
  59. Anzahl : integer;
  60. i : integer;
  61. neueZahl : integer;
  62. Listenanfang,
  63. Listenende : tRefListe;
  64.  
  65.  
  66. begin
  67. Listenanfang := nil;
  68. repeat
  69. write ('Wie viele Zahlen wollen Sie eingeben? ');
  70. readln (Anzahl);
  71. until Anzahl >= 0;
  72.  
  73. write ('Bitte geben Sie ', Anzahl, ' Zahlen ein: ');
  74.  
  75. { Liste aufbauen }
  76. for i := 1 to Anzahl do
  77. begin
  78. read (neueZahl);
  79. if Listenanfang = nil then
  80. begin
  81. new (Listenanfang);
  82. Listenanfang^.next := nil;
  83. Listenanfang^.info := neueZahl;
  84. Listenende := Listenanfang;
  85. end
  86. else
  87. begin
  88. new (Listenende^.next);
  89. Listenende := Listenende^.next;
  90. Listenende^.next := nil;
  91. Listenende^.info := neueZahl
  92. end { if Liste = nil }
  93. end; { for }
  94. outListe := Listenanfang;
  95. writeln
  96. end; { LiesListe }
  97.  
  98.  
  99. procedure gibListeAus (inListe : tRefListe);
  100. { gibt die Liste mit Anfangszeiger inListe aus }
  101. var
  102. ListenElement : tRefListe;
  103. begin
  104. ListenElement := inListe;
  105. while ListenElement <> nil do
  106. begin
  107. write(ListenElement^.info, ' ');
  108. ListenElement := ListenElement^.next;
  109. end;
  110. writeln;
  111. end; { gibListeAus }
  112.  
  113.  
  114. begin { testeAnhaengen }
  115. writeln('Bitte geben Sie die erste Liste ein! ');
  116. LiesListe (Liste1);
  117. writeln;
  118.  
  119. writeln('Bitte geben Sie die zweite Liste ein! ');
  120. LiesListe (Liste2);
  121. writeln;
  122.  
  123. writeln('Die konkatenierte Liste lautet: ');
  124. Anhaengen (Liste1, Liste2, Gesamtliste);
  125. GibListeAus (Gesamtliste);
  126. end. { TesteAnhaengen }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement