Problem: Zugriff nur auf das Kopfelement möglich!
Aufgabe: Hänge eine Element an eine Liste an!
Ein Element wird an eine leere Liste angehängt:
Element: merkur
Quellliste: []
Ergebnis der Operation: [merkur]
(Zielliste)
Das ist einfach:
oder kürzer:
Element: mars
Quellliste: [merkur, venus, erde]
Ergebnis der Operation: [merkur, venus, erde,
mars]
(Zielliste)
Algorithmus:
Merke dir das Element: | Restliste, an die das Element mars angehängt werden muss: |
[merkur,venus,erde] | |
merkur | [venus,erde] |
venus | [erde] |
erde | [] |
Damit wurde das Problem rekursiv auf den einfachen Fall zurückgeführt.
Es ergibt sich zunächst die Zielliste [mars].
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. |
[mars] | erde |
[erde, mars] | venus |
[venus, erde, mars] | merkur |
[merkur, venus, erde, mars] |
anhaengen(X,Qs,Zs)
:- Qs=[Kopf1|Rest1], Zs=[Kopf1|Rest2], anhaengen(X,Rest1,Rest2).
Zusammenfassung:
anhaengen(X,[],Ls) :- Ls=[X].
anhaengen(X,Qs,Zs) :- Qs=[Kopf1|Rest1], Zs=[Kopf1|Rest2], anhaengen(X,Rest1,Rest2). |