• Keine Ergebnisse gefunden

¨Ubungsblatt 5 Ausgabe:

N/A
N/A
Protected

Academic year: 2021

Aktie "¨Ubungsblatt 5 Ausgabe:"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Informatik Bachelor 1. Semester WS 2016/17 Prof. Dr. Wolfgang Schramm Algorithmen und Datenstrukturen (ADS)

Ubungsblatt 5 ¨

Ausgabe: 1.12.2016

Abgabe: 15.12.2016 (23:59 Uhr)

Aufgabe 1: ADT Liste - Programmieraufgabe - 60 Punkte

(a) In der Vorlesung wurde der ADT Liste vorgestellt, dessen Methoden Sie in der Klasse LinkedListim- plementieren sollen. ¨Uberlegen Sie sich vorher genau, welche Parameter und welchen R¨uckgabetyp Sie f¨ur die jeweiligen Methoden ben¨otigen. In der Liste werden nur einfacheint-Werte gespeichert.

Erg¨anzen Sie die aus der Vorlesung bekannten Methoden um die folgenden:

• toString: gibt einen String zur¨uck, der den gesamten Inhalt der Liste enth¨alt.

• add(int index, int element): f¨ugt das Element element an der Stelle index in die Liste ein.

Uberlegen Sie, was zu tun ist, wenn der index nicht passt.¨

• get(int index): gibt das Element (d.h.int-Wert) an der Stelle index zur¨uck. ¨Uberlegen Sie, was zu tun ist, wenn der index nicht passt.

• toArray: liefert die LinkedList als Array vonint-Werten zur¨uck.

• cloneDeep: macht eine tiefe (!) Kopie der aktuellen Liste und gibt diese zur¨uck.

• addAll(LinkedList otherList): f¨ugt alle Elemente der ¨ubergebenen Liste (otherList) zu der aktuellen Liste hinzu (kann (mit Vorsicht angewandt) zur Implementierung vonconcatverwendet werden).

• concat(LinkedList otherList): konkateniert die aktuelle Liste mitotherList, indem die Listen jeweils tief kopiert werden. Als Ergebnis wird die konkatenierte Liste zur¨uckgegeben.

(b) Implementieren Sie in der KlasseLinkedList alle Methoden unter Zuhilfenahme der KlasseListNode f¨ur die Knoten der Linearen Liste.

public class ListNode { private int value;

private ListNode next;

public int getValue() { return value;

}

public void setValue(int value) { this.value = value;

}

public ListNode getNext() { return next;

}

public void setNext(ListNode next) { this.next = next;

} }

Sie k¨onnen f¨ur Ihr Programm die KlassenListNodeundMenuverwenden, die Sie ¨uber die Vorlesungs- seite im Wikiformia herunterladen k¨onnen.

Bez¨uglich der Namen bzw. der konkreten Auspr¨agung der Typen im m¨ussen Sie ggf. noch Anpassungen in Ihrem Programm vornehmen.

Schreiben Sie ein Hauptprogramm, in welchem 3 Listenobjekte vereinbart sind. In einer (großen) Schleife sollen dann, in Abh¨angigkeit von Benutzereingaben, die verschiedenen Operationen aufgerufen werden.

1

(2)

Sie finden auf dem zip-file alle notwendigen Klassen bzw. das Interface.

Die zu implementierenden Methoden (bei einigen Methoden sind bespielhaft R¨uckgabetypen angegeben):

addFirst (int val) addLast (int val) int removeFirst () int removeLast () int getFirst () int getLast () boolean isEmpty ()

LinkedList empty () // Achtung --> static Methode (Klasse) boolean contains (int val)

LinkedList clear () int size()

LinkedList clone () delete (int) String toString () add(int index, int val) int get(int index) int [] toArray () LinkedList cloneDeep () addAll(LinkedList otherList) concat(LinkedList otherList)

Bei den Methoden, bei denen kein R¨uckgabetyp angegeben ist, m¨ussen Sie sich einen sinnvollen ¨uberlegen.

Denken Sie an Kommentare (in Englisch)!

Aufgabe 2: ADT Queue - Programmieraufgabe - 30 Punkte

Definieren Sie ein InterfaceQueue, welches die Funktionalit¨at des ADT Queue, wie in der Vorlesung vorge- stellt, bereitstellt.

Geben Sie eine Implementierung f¨ur das InterfaceQueue mit Hilfe des ADTLinkedList an, mit welchem sie Elemente vom Typint(wie in Aufgabe 1) verwalten k¨onnen.

Schreiben Sie ein geeignetes Hauptprogramm, mit dem Sie die Operationen der Queue flexibel testen k¨onnen, d.h. ¨uber eine geeignete Men¨usteuerung k¨onnen die Operationen der Queue aufgerufen werden.

Denken Sie an Kommentare (in Englisch)!

Aufgabe 3: Sortieren - Algorithmen - 25 Punkte

Gegeben ist die Folge 2 17 23 13 18 3 19 11 14 16 8.

Hinweis: Es sind keine Programme zu schreiben! Sie sollen vielmehr alle relevanten Zwischenschritte der Sortierverfahren geeignet notieren.

(a) Sortieren Sie die Folge mit i) dem nat¨urlichen und

ii) dem direkten Merge Sort-Algorithmus.

Notieren Sie die Folge nach jeder split- und merge-Operation.

(b) Demonstrieren Sie das Sortieren mit Quicksort (alle 3 Varianten). Protokollieren Sie Ihr Vorgehen. In diesem Protokoll muss ersichtlich sein, welches Element das Pivot Element ist (z.B. mit einem Unter- strich), und welche Zahlen getauscht wurden (z.B. mit einem Doppelpfeil), sowie jede Teilung (z.B. mit einem senkrechten Strich|).

2

Referenzen

ÄHNLICHE DOKUMENTE

Dis- kussionen um eine Erweiterung der Negativliste hält Frau Adam- Schwaetzer freilich nicht für gera- ten, jedenfalls nicht vor 1984.. Fazit also zur Negativliste: Das Ding

P., Institut de Médecine Tropicale, Junqueira 96, Lis¬ bonne, Portugal Striebel, IL, CIBA Société Anonyme, Bâle, Suisse Wilhelm, M., CIBA Société Anonyme, Bâle, Suisse Yogore, M..

Aeberhard Ad., pasteur Aeschlimann Jean, droguiste Aeschlimann Robert, pharmacien Bœhler Bruno, pharmacien Bœgli Jacques, maitre serrurier Bourquin-Marchand Ch., technicien

* Bringolf John, horloger Bueche Louis, architecte Charmillot Paul, avocat, colonel, conseiller aux Etats Corbat Ariste, instituteur Dr Cuttat Emile, médecin Dr David Jean,

Amweg Gustave, professeur Baconnat Georges, employé Baumgartner Hermann, industriel Bernard Charles, vétérinaire Dr Bessire Otto, professeur Beuchat Arthur, professeur Billieux

D' Butignot Edouard, médecin Cerf Alphonse, professeur Cerf Norbert, professeur Champion Alfred, instituteur D' Chappuis Joseph, curé-doyen Christe Pierre, avocat et notaire

Unter erwachsenen Personen mit chronischen Krankheiten sollen die mit dem höchsten Risiko für einen schweren Verlauf von Covid-19 prioritär Zugang zur Impfung erhalten..

Messieurs, Boéchat Paul, imprimeur Boéchat Albert, imprimeur Boillat Paul, direct, télégraphe Dr Broquet Charles, médecin Dr Butignot Edouard, médecin Cerf Alphonse, professeur