\documentclass{bschlangaul-aufgabe} \bLadePakete{java,uml} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 14}, Thematik = {Klasse „DoublyLinkedList“}, Referenz = 66112-2005-F.T1-A1, RelativerPfad = Examen/66112/2005/03/Thema-1/Aufgabe-1.tex, ZitatSchluessel = aud:pu:7, ZitatBeschreibung = {entnommen aus Algorithmen und Datenstrukturen, Präsenzübung 4, Universität Bayreuth, Aufgabe 14}, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Klassendiagramm}, EinzelpruefungsNr = 66112, Jahr = 2005, Monat = 03, ThemaNr = 1, AufgabeNr = 1, } Betrachten\footcite[entnommen aus Algorithmen und Datenstrukturen, Präsenzübung 4, Universität Bayreuth, Aufgabe 14]{aud:pu:7} Sie folgendes Klassendiagramm\index{Klassendiagramm}, das doppelt-verkettete Listen spezifiziert. Die Assoziation \bJavaCode{head} zeigt auf das erste Element der Liste. Die Assoziationen \bJavaCode{previous} und \bJavaCode{next} zeigen auf das vorherige bzw. folgende Element. \footcite{examen:66112:2005:03} \begin{center} \begin{tikzpicture}[scale=0.8, transform shape] \tiny \umlclass {DoublyLinkedList}{} { insert(i: Integer)\\ check(): Boolean } \umlclass[x=5] {ListElem}{ data: Integer } { insert(i: Integer)\\ } \umluniassoc[arg=head,mult=1,pos=0.7]{DoublyLinkedList}{ListElem} \umlassoc[% pos1=0.3, arg1=previous, arg2=next, mult1=1, mult2=1, angle1=-30, angle2=30, loopsize=3cm, ]{ListElem}{ListElem} \end{tikzpicture} \end{center} \noindent Implementieren Sie die doppelt-verketteten Listen in einer geeigneten objektorientierten Sprache (\zB Java oder C++), das heißt: \begin{enumerate} %% % (a) %% \item Implementieren Sie die Klasse \bJavaCode{ListElem}. Die Methode \bJavaCode{insert} ordnet eine ganze Zahl \bJavaCode{i} in eine aufsteigend geordnete doppelt-verkettete Liste \bJavaCode{l} an die korrekte Stelle ein. Sei \zB das Objekt \bJavaCode{l} eine Repräsentation der Liste \bJavaCode{[0, 2, 2, 6, 8]} dann liefert \bJavaCode{l.insert(3)} eine Repräsentation der Liste \bJavaCode{[0, 2, 2, 3, 6, 8]}. \begin{bAntwort} \bJavaExamen{66112}{2005}{03}{ListElem} \end{bAntwort} %% % (b) %% \item Implementieren Sie die Klasse \bJavaCode{DoublyLinkedList}, wobei die Methode \bJavaCode{insert} eine Zahl \bJavaCode{i} in eine aufsteigend geordnete Liste einordnet. Die Methode \bJavaCode{check} überprüft, ob eine Liste korrekt verkettet ist, \dh ob für jedes ListElem-Objekt \bJavaCode{o}, das über den \bJavaCode{head} der Liste erreichbar ist, der Vorgänger des Nachfolgers von \bJavaCode{o} gleich \bJavaCode{o} ist. \end{enumerate} \begin{bAntwort} \bJavaExamen{66112}{2005}{03}{DoublyLinkedList} \end{bAntwort} \end{document}