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). |
|