close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

01. Übungsblatt - Technische Universität Braunschweig

EinbettenHerunterladen
Technische Universität Braunschweig
Institut für Programmierung und Reaktive Systeme
Dr. Werner Struckmann
30. Oktober 2014
Programmieren für Fortgeschrittene
1. Übungsblatt
Aufgabe 1: Gegeben seien die beiden Klassen Node und List zur Implementierung
verketteter Listen:
public class Node {
public int item;
public List next;
public Node(int item) {
this.item = item;
this.next = new List();
}
}
public class List {
public Node node = null;
public boolean isEmpty() {
return node == null;
}
public void insert(int x) {
if (isEmpty())
node = new Node(x);
else {
Node n
= new Node(x);
n.next.node = node;
node
= n;
}
}
public String toString() {
String s = "<";
if (!isEmpty()) {
s = s+node.item+"; ";
return s = s+node.next;
}
return s+">";
}
}
a) Was gibt das folgende Programmfragment aus?
List l = new List();
l.insert(2); l.insert(-4); l.insert(3); l.insert(6);
System.out.println(l);
b) Schreiben Sie eine Methode boolean isPermutation(), die den Wert true genau
dann liefert, falls die aktuelle Liste jede der Zahlen 1, 2, ..., n genau einmal enthält,
wobei n die Anzahl der Listenelemente ist. Beispiel: Die Methode soll true für die
Listen 4, 2, 1, 3 und 5, 1, 2, 3, 4 sowie false für die Listen 3, 3, 1, 2 und 1, 2, 4 liefern.
c) Schreiben Sie eine Methode void reverse(), die die Reihenfolge der Listenelemente umkehrt. Beispiel: Falls l die Liste 5, 1, 2, −4, 3 ist, dann soll l nach Aufruf der
Methode die Liste 3, −4, 2, 1, 5 sein.
Lösen Sie die Aufgabe in Java ohne ein Schleifenkonstrukt (while, for, do) zu verwenden.
Aufgabe 2:
Die durch
f (x) =
x − 10,
x ≥ 101
f (f (x + 11)), x ≤ 100
definierte Funktion f : Z → Z wird McCarthy-Funktion genannt.
a) Geben Sie einen nicht rekursiven Ausdruck für f (x) für alle x ≤ 100 an.
b) Wie oft wird die Funktion f bei der Berechnung von f (x), x ∈ Z, aufgerufen?
–2–
Document
Kategorie
Technik
Seitenansichten
7
Dateigröße
141 KB
Tags
1/--Seiten
melden