Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Stunde vom 8.11.2010
Browse files Browse the repository at this point in the history
  • Loading branch information
timjb committed Nov 9, 2010
1 parent e276257 commit 7134543
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 2 deletions.
81 changes: 80 additions & 1 deletion index.html
Expand Up @@ -639,7 +639,86 @@ <h5 id="mit-rekursion">Mit Rekursion</h5>
<li><code>vorneEntfernen()</code></li>
<li><code>hintenEntfernen()</code></li>
<li><code>datenknotenGeben(String datenwert)</code></li>
</ul><p><strong>Hausaufgabe: S. 31 Nr. 4</strong></p>
</ul><p class="date">8.11.2010</p>

<h5 id="die-methode-hintenentnehmen-der-einfach-verketteten-liste">Die Methode <code>hintenEntnehmen</code> der einfach verketteten Liste:</h5>

<ul>
<li>Inhalt des letzten Knoten wird für entnehmen benötigt</li>
<li>Suche nach inhaltLetzter mit inhaltLetzterGeben</li>
<li>Datenwert von inhaltLetzter kann der Methode entnehmen übergeben werden</li>
<li>Rückgabewert von entnehmen(inhaltLetzter) liefert Inhalt des ehemals letzten Knoten</li>
</ul><div class="highlight"><pre><span class="kd">class</span> <span class="nc">Liste</span> <span class="o">{</span>
<span class="c1">// ...</span>
<span class="kd">public</span> <span class="n">Datenelement</span> <span class="nf">hintenEntnehmen</span><span class="o">()</span> <span class="o">{</span>
<span class="n">Datenelement</span> <span class="n">inhaltLetzter</span> <span class="o">=</span> <span class="n">erster</span><span class="o">.</span><span class="na">inhaltLetzterGeben</span><span class="o">(</span><span class="n">erster</span><span class="o">.</span><span class="na">inhaltGeben</span><span class="o">());</span>
<span class="k">return</span> <span class="nf">entnehmen</span><span class="o">(</span><span class="n">inhaltLetzter</span><span class="o">.</span><span class="na">datenwertGeben</span><span class="o">());</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="n">Datenelement</span> <span class="nf">entnehmen</span><span class="o">(</span><span class="n">String</span> <span class="n">datenwert</span><span class="o">)</span> <span class="o">{</span>
<span class="c1">// alten Knoteninhalt festhalten</span>
<span class="n">Datenelement</span> <span class="n">alterKnoteninhalt</span> <span class="o">=</span> <span class="n">datenknotenGeben</span><span class="o">(</span><span class="n">datenwert</span><span class="o">).</span><span class="na">inhaltGeben</span><span class="o">();</span>
<span class="n">erster</span><span class="o">.</span><span class="na">entfernen</span><span class="o">(</span><span class="n">datenwert</span><span class="o">);</span>
<span class="k">return</span> <span class="n">alterKnoteninhalt</span><span class="o">;</span> <span class="c1">// Knoteninhalt zurueckgeben</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="n">Datenknoten</span> <span class="nf">datenknotenGeben</span><span class="o">(</span><span class="n">String</span> <span class="n">datenwert</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">erster</span><span class="o">.</span><span class="na">datenknotenGeben</span><span class="o">(</span><span class="n">datenwert</span><span class="o">);</span>
<span class="o">}</span>
<span class="c1">// ...</span>
<span class="o">}</span>
</pre></div>
<div class="highlight"><pre><span class="kd">abstract</span> <span class="kd">class</span> <span class="nc">Listenelement</span> <span class="o">{</span>
<span class="c1">// ...</span>
<span class="kd">public</span> <span class="kd">abstract</span> <span class="n">Listenelement</span> <span class="nf">entfernen</span><span class="o">(</span><span class="n">String</span> <span class="n">suchwert</span><span class="o">);</span>
<span class="kd">public</span> <span class="kd">abstract</span> <span class="n">Datenelement</span> <span class="nf">inhaltLetzterGeben</span><span class="o">(</span><span class="n">Datenelement</span> <span class="n">aktInhalt</span><span class="o">);</span>
<span class="kd">public</span> <span class="kd">abstract</span> <span class="n">Datenknoten</span> <span class="nf">datenknotenGeben</span><span class="o">(</span><span class="n">String</span> <span class="n">suchwert</span><span class="o">);</span>
<span class="c1">// ...</span>
<span class="o">}</span>
</pre></div>
<div class="highlight"><pre><span class="kd">public</span> <span class="n">Datenknoten</span> <span class="kd">extends</span> <span class="n">Listenelement</span> <span class="o">{</span>
<span class="c1">// ...</span>
<span class="kd">public</span> <span class="n">Listenelement</span> <span class="nf">entfernen</span><span class="o">(</span><span class="n">String</span> <span class="n">suchwert</span><span class="o">)</span> <span class="o">{</span>
<span class="c1">// wenn datenwert von inhalt mit suchwert ueberein-</span>
<span class="c1">// stimmt, soll der Knoten entfernt werden</span>
<span class="k">if</span> <span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="na">inhalt</span><span class="o">.</span><span class="na">datenwertGeben</span><span class="o">()</span> <span class="o">==</span> <span class="n">suchwert</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">naechster</span><span class="o">;</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="na">naechster</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="na">naechster</span><span class="o">.</span><span class="na">entfernen</span><span class="o">(</span><span class="n">suchwert</span><span class="o">);</span>
<span class="k">return</span> <span class="k">this</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="n">Datenelement</span> <span class="nf">inhaltLetzterGeben</span><span class="o">(</span><span class="n">Datenelement</span> <span class="n">aktInhalt</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">naechster</span><span class="o">.</span><span class="na">inhaltLetzterGeben</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="na">inhalt</span><span class="o">);</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="n">Datenknoten</span> <span class="nf">datenknotenGeben</span><span class="o">(</span><span class="n">String</span> <span class="n">suchwert</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="na">inhalt</span><span class="o">.</span><span class="na">datenwertGeben</span><span class="o">()</span> <span class="o">==</span> <span class="n">suchwert</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">;</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="na">naechster</span><span class="o">.</span><span class="na">datenwertGeben</span><span class="o">(</span><span class="n">suchwert</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="c1">// ...</span>
<span class="o">}</span>
</pre></div>
<div class="highlight"><pre><span class="kd">public</span> <span class="n">Abschluss</span> <span class="kd">extends</span> <span class="n">Listenelement</span> <span class="o">{</span>
<span class="c1">// ...</span>
<span class="kd">public</span> <span class="n">Listenelement</span> <span class="nf">entfernen</span><span class="o">(</span><span class="n">String</span> <span class="n">suchwert</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">;</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="n">Datenelement</span> <span class="nf">inhaltLetzterGeben</span><span class="o">(</span><span class="n">Datenelement</span> <span class="n">aktInhalt</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">aktInhalt</span><span class="o">;</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="n">Datenknoten</span> <span class="nf">datenknotenGeben</span><span class="o">(</span><span class="n">String</span> <span class="n">suchwert</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
<span class="o">}</span>
<span class="c1">// ...</span>
<span class="o">}</span>
</pre></div>
</div>
<script>
(function(win, doc) {
Expand Down
84 changes: 83 additions & 1 deletion index.markdown
Expand Up @@ -477,4 +477,86 @@ Weitere Methoden:
* `hintenEntfernen()`
* `datenknotenGeben(String datenwert)`

**Hausaufgabe: S. 31 Nr. 4**
<p class="date">8.11.2010</p>

##### Die Methode `hintenEntnehmen` der einfach verketteten Liste:

* Inhalt des letzten Knoten wird für entnehmen benötigt
* Suche nach inhaltLetzter mit inhaltLetzterGeben
* Datenwert von inhaltLetzter kann der Methode entnehmen übergeben werden
* Rückgabewert von entnehmen(inhaltLetzter) liefert Inhalt des ehemals letzten Knoten
^
#highlight java
class Liste {
// ...
public Datenelement hintenEntnehmen() {
Datenelement inhaltLetzter = erster.inhaltLetzterGeben(erster.inhaltGeben());
return entnehmen(inhaltLetzter.datenwertGeben());
}

public Datenelement entnehmen(String datenwert) {
// alten Knoteninhalt festhalten
Datenelement alterKnoteninhalt = datenknotenGeben(datenwert).inhaltGeben();
erster.entfernen(datenwert);
return alterKnoteninhalt; // Knoteninhalt zurueckgeben
}

public Datenknoten datenknotenGeben(String datenwert) {
return this.erster.datenknotenGeben(datenwert);
}
// ...
}
^
#highlight java
abstract class Listenelement {
// ...
public abstract Listenelement entfernen(String suchwert);
public abstract Datenelement inhaltLetzterGeben(Datenelement aktInhalt);
public abstract Datenknoten datenknotenGeben(String suchwert);
// ...
}
^
#highlight java
public Datenknoten extends Listenelement {
// ...
public Listenelement entfernen(String suchwert) {
// wenn datenwert von inhalt mit suchwert ueberein-
// stimmt, soll der Knoten entfernt werden
if (this.inhalt.datenwertGeben() == suchwert) {
return this.naechster;
} else {
this.naechster = this.naechster.entfernen(suchwert);
return this;
}
}

public Datenelement inhaltLetzterGeben(Datenelement aktInhalt) {
return this.naechster.inhaltLetzterGeben(this.inhalt);
}

public Datenknoten datenknotenGeben(String suchwert) {
if (this.inhalt.datenwertGeben() == suchwert) {
return this;
} else {
return this.naechster.datenwertGeben(suchwert);
}
}
// ...
}
^
#highlight java
public Abschluss extends Listenelement {
// ...
public Listenelement entfernen(String suchwert) {
return this;
}

public Datenelement inhaltLetzterGeben(Datenelement aktInhalt) {
return aktInhalt;
}

public Datenknoten datenknotenGeben(String suchwert) {
return null;
}
// ...
}

0 comments on commit 7134543

Please sign in to comment.