Lösung 3.12.11, 3., Vollständige Induktion: Alle Ergebnisse sieht

Werbung
Lösung 3.12.11, 3.,
Vollständige Induktion: Alle Ergebnisse sieht man einfach durch Einsetzen der jeweiligen Nachbedingung.
3. a)
Die Zeiger auf die jeweils erzeugten Knoten werden mit n1, n2, …, nk bezeichnet.
Induktionsanfang: Damit man die Struktur sieht, werden die Ergebnisse der ersten zwei Aufrufe dargestellt.
// first last n1
0
0
// 1. Aufruf pushFront(d1) n1
n1
// 2. Aufruf pushFront(d2) n2
n2
->{d1,0}
->{d1,0}
->{d2,n1}
Induktionsvoraussetzung: Bei den ersten k Aufrufen wurden k Knoten erzeugt, auf die n 1, n2, …, nk zeigen:
// first last n1
// k Aufrufe pushFront(dk) nk
n1 ->{d1,0}
n2
... nk
->{d2,n1} ->{dk,nk-1}
nk+1
Induktionsschritt: Der (k+1)-te Aufruf von pushFront(d k+1): Einsetzen der Nachbedingung von pushFront
// k+1 Aufr. pushFront(dk+1) nk+1
->{d1,0}
->{d2,n1} ->{dk,nk-1}
->{dk+1,nk}
3. b) ------------------------------------------------------------------------------Die Zeiger auf die jeweils erzeugten Knoten werden mit n1, n2, …, nk bezeichnet.
Induktionsanfang: Damit man die Struktur sieht, werden die Ergebnisse der ersten zwei Aufrufe dargestellt.
// first last n1
0
0
// 1. Aufruf pushBack(d1) n1
n1
->{d1,0}
// 2. Aufruf pushBack(d2)
n2
->{d1,n2}
n2
->{d2,0}
Induktionsvoraussetzung: Bei den ersten k Aufrufen wurden k Knoten erzeugt, auf die n 1, n2, …, nk zeigen:
// first last n1
// k Aufrufe pushBack(dk) n1
nk ->{d1,n2}
n2
... nk
->{d2,n3} ->{dk,0}
nk+1
Induktionsschritt: Der (k+1)-te Aufruf von pushFront(d k+1): Einsetzen der Nachbedingung von pushBack
// k+1 Aufr. pushBack(dk+1) n1
nk+1 ->{d1,n2}
->{d2,n3} ->{dk,nk+1}
->{dk+1,0}
3. c) ------------------------------------------------------------------------------Die Zeiger auf die jeweils erzeugten Knoten werden mit n1, n2, …, nk bezeichnet. Aus Platzgründen werden
pushFrontDll mit pushFDll, firstDll mit first und lastDll mit last abgekürzt:
Induktionsanfang: Damit man die Struktur sieht, werden die Ergebnisse der ersten zwei Aufrufe dargestellt.
// first last n1
0
0
// 1. Aufruf pushFDll(d1)
n1
// 2. Aufruf pushFDll(d2)
n2
n1
n2
->{d1,0,0}
->{ d1,0,n2} ->{d2,n1,0}
Induktionsvoraussetzung: Bei den ersten k Aufrufen wurden k Knoten erzeugt, auf die n 1, n2, …, nk zeigen:
// first last
// k Aufrufe pushFDll(dk)
nk
n1
n1
... nk
->{d1,0,n2}
->{dk,nk-1,0}
nk+1
Induktionsschritt: Der (k+1)-te Aufruf von pushFrontDll(dk+1): Einsetzen der Nachbedingung von pushFrontDll:
// k. Aufruf pushFDll(dk+1)
nk+1
n1
->{d1,0,n2}
->{dk,nk-1,nk+1}
->{dk+1,nk,0}
3. d) ------------------------------------------------------------------------------Die Zeiger auf die jeweils erzeugten Knoten werden mit n1, n2, …, nk bezeichnet. Aus Platzgründen werden
pushBackDll mit pushBDll, firstDll mit first und lastDll mit last abgekürzt:
Induktionsanfang: Damit man die Struktur sieht, werden die Ergebnisse der ersten zwei Aufrufe dargestellt.
// first last n1
0
0
// 1. Aufruf pushBDll(d1)
n1
// 2. Aufruf pushBDll(d2)
n1
->{d1,0,0}
n2
->{d1,n2,0}
n2
->{d2,0,n1}
Induktionsvoraussetzung: Bei den ersten k Aufrufen wurden k Knoten erzeugt, auf die n 1, n2, …, nk zeigen:
// first last n1
... nk
// k Aufrufe pushBDll(dk)
n1
nk
->{d1,n2,0}
->{dk,0,nk-1}
nk+1
Induktionsschritt: Der (k+1)-te Aufruf von pushBackDll(dk+1): Einsetzen der Nachbedingung von pushBackDll:
// k. Aufruf pushBDll(dk+1)
n1
nk+1
->{d1,n2,0}
->{dk,nk+1,nk-1}->{dk+1,0,nk}
Herunterladen