Aufgabe: Verknüpfe zwei Listen zu einer Gesamtliste! Dabei soll
Liste2 an Liste1 angehängt werden.
Liste1 ist eine leere Liste.
Liste1: []
Liste2: [erfurt,weimar,jena]
Ergebnis der Operation: [erfurt,weimar,jena]
(Gesamtliste)
Das ist einfach:
oder kürzer:
Liste1: [sangerhausen,soemmerda]
Liste2: [erfurt,weimar,jena]
Ergebnis der Operation: [sangerhausen,soemmerda,
erfurt,weimar,jena]
(Gesamtliste)
Algorithmus:
Merke dir das Element: | Rest, an den Liste2 angehängt werden muss: |
[sangerhausen,soemmerda] | |
sangerhausen | [soemmerda] |
soemmerda | [] |
Damit wurde das Problem rekursiv auf den einfachen Fall zurückgeführt.
Es ergibt sich zunächst die Gesamtliste [erfurt,weimar,jena].
Beim rekursiven Aufstieg müssen die gemerkten Kopfelemente wieder
ergänzt werden.
Liste | In der Variablen Kopf1 gemerktes Kopfelement , das nun wieder ergänzt wird. |
[erfurt,weimar,jena] | soemmerda |
[soemmerda,erfurt,weimar,jena] | sangerhausen |
[sangerhausen,soemmerda,erfurt,weimar,jena] |
append(Liste1,Liste2,Gesamtliste)
:- Liste1=[Kopf1|Rest1], Gesamtliste=[Kopf1|Rest3],
append(Rest1,Liste2,Rest3).
Zusammenfassung:
append([],Liste2,Gesamtliste):-Gesamtliste=Liste2.
append(Liste1,Liste2,Gesamtliste) :- Liste1=[Kopf1|Rest1], Gesamtliste=[Kopf1|Rest3], append(Rest1,Liste2,Rest3). |