• Keine Ergebnisse gefunden

Aufgabe2(Multi-Listen, 7Punkte ) Aufgabe1(DoppeltverketteteListe, 2Punkte ) Abgabeam05.05 ¨UbungenzuInformatikII-Blatt3

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe2(Multi-Listen, 7Punkte ) Aufgabe1(DoppeltverketteteListe, 2Punkte ) Abgabeam05.05 ¨UbungenzuInformatikII-Blatt3"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. G. Zachmann Daniel Mohr

TU Clausthal Institut f¨ur Informatik

28. April 2011

Sommersemester 2011

Ubungen zu Informatik II - Blatt 3 ¨

Abgabe am 05.05

Organisatorisches

• Die theoretischen Aufgaben m¨ussen Sie donnerstags in der Vorlesung abgeben.

• Die Programmieraufgaben m¨ussen Sie donnerstags bis sp¨atestens 13:15 Uhr an Ihren Tutor per Email (christian.schnarr@tu-clausthal.de) schicken.

• Die Programmieraufgaben m¨ussen von Ihnen in der ¨Ubung vorgef¨uhrt und erkl¨art werden.

Aufgabe 1 (Doppelt verkettete Liste, 2 Punkte)

Gegeben ist eine doppelt verkettete Liste, deren Listenelemente so definiert sind:

class ListElement2(object):

def __init__( self ):

self.item = self.next = self.prev = None

Gegeben ist außerdem wieder die Variablecursor, wie in der Vorlesung besprochen.

Gegeben ist nun ein Elementz, d.h., dieses wurde erzeugt mitz = ListElement2().

Schreiben Sie die Listenfunktion insertAfterCursor(z) in Python, mit der z nach dem Li- stenelement, auf dascursorzeigt, in die Liste eingef¨ugt wird. (Denken Sie auch an die Spezialf¨al- le!)

Aufgabe 2 (Multi-Listen, 7 Punkte)

Implementieren Sie eine Klasse SparseMatrixzur Repr¨asentation quadratischer, d¨unn besetzter Matrizen. Verwenden Sie dazu die aus der Vorlesung bekannten Multi-Listen. Die Klasse soll minde- stens folgende Funktionen haben:

• Dem Kontruktor soll die Anzahl der Spalten und Zeilen ¨ubergeben werden.

• Implementieren Sie eine Methodeset() zum Setzen der Matrixeintr¨age.

• Implementieren Sie eine Methodeget( )die den Wert eines Matrixeintrags zur¨uckliefert.

• Schreiben Sie eine Funktion (Methode) zur Addition zweier solcher Matrizen

• Schreiben Sie eine Funktion (Methode) zur Multiplikation zweier solcher Matrizen

• Entwerfen Sie eine Funktion transpose, die die transponierte Matrix zur¨uck liefert (d.h. die Eintr¨age der Spalten und Zeilen werden vertauscht) .

1

(2)

• Implementieren Sie eine Funktionprintzur Ausgabe der Matrix.

Halten Sie sich dabei bitte an folgende Deklarationen:

1 class SparseMatrix(Object):

2 def __init__ (self, rows, cols):

3 # hier kommt Ihr Code

4 def set(self, row, col, value):

5 # hier kommt Ihr Code

6 def get(self, row, col):

7 # hier kommt Ihr Code

8 return #...

9 def add(self, other_matrix):

10 new_matrix = SparseMatrix()

11 # hier kommt Ihr Code

12 return new_matrix

13 def mul(self, other_matrix):

14 new_matrix = SparseMatrix()

15 # hier kommt Ihr Code

16 return new_matrix

17 def transpose(self):

18 new_matrix = SparseMatrix()

19 # hier kommt Ihr Code

20 return #...

21 def print(self):

D¨unn besetzte Matrizen spielen in sehr vielen Anwendungen eine wichtige Rolle: Beispielsweise kann man Zugverbindungen oder Straßenkarten als d¨unn besetzte Matrizen speichern. Dazu erstellt man eine Matrix, in der f¨ur jeden Ort eine Spalte und eine Zeile angelegt wird. Dann werden die Werte der Spalten und Zeileneintr¨age auf die L¨ange der Straßen zwischen den Orten gesetzt. (Das ergibt die sogennante Adjazenzmatrix)

Mit Hilfe solcher Straßenmatrizen lassen sich dann unter Verwendung spezieller Algorithmen die k¨ur- zesten Wege zwischen zwei beliebigen Orten berechnen. Dazu aber mehr im n¨achsten Semester.

Aufgabe 3 (Queue, 2 Punkte)

In der Vorlesung wurde erl¨autert, wie man eine Queue mittels Array (mit fester Gr¨oße) implementiert.

Der wesentliche Trick dabei war ja der zyklische Zugriff. Dabei kann der Fall eintreten, dass der Front- und der Back-Zeiger auf dasselbe Element zeigen.

Erkl¨aren Sie, wie man die F¨alle unterscheiden kann, ob die Queue leer ist oder voll.

Aufgabe 4 (Postfix, 2 Punkte)

In der Vorlesung wurde der Algorithmus zum Auswerten von Postfix-Ausdr¨ucken besprochen. F¨ugen Sie f¨ur den Divisions-Operator den entsprechenden Code ein.

Sie k¨onnen die Aufgabe in Papierform abgeben.

2

(3)

Aufgabe 5 (Stack, 2 Punkte)

Ein Buchstabe in der nachfolgenden Sequenz steht f¨ur die Stack-Operationpushund ein♦steht f¨ur die Operationpopmit Ausgabe des ge-pop-ten Zeichens:

E A S♦Y♦Q U E♦ ♦ ♦S T♦ ♦ ♦I O♦N♦ ♦ ♦

Geben Sie die Folge der Buchstaben an, welche durch diepop’sausgegeben wird. Gehen Sie davon aus, dass der Stack zu Beginn leer ist.

3

Referenzen

ÄHNLICHE DOKUMENTE

Geben Sie dabei s¨ amtliche Zwischenschritte und Balance-Faktoren an den Knoten an (f¨ ur Knoten, deren Balance- Faktor sich nie ¨ andert, reicht es, den Balance-Faktor

Sie ben¨ otigen f¨ ur diese Aufgabe vermutlich Kenntnisse in der Sprache Javascript, und vermutlich keine Kenntnisse in WebGL. Bei Fragen wenden Sie sich gerne jederzeit an

a) Beschreiben Sie in pseudo-code den Algorithmus zur Aktualisierung eines 3D-Gitters, wie es fur die sog. \broad phase" eingesetzt wird. Sie durfen dabei voraussetzen, dass

Der Ruckgabewert muss der String sein, welcher ausgeben werden soll, falls print RECHTECK aufgeruft

Ihre Aufgabe besteht nun darin, fur die folgenden Listenoperationen anzugeben, wie die Zeiger um- gebogen werden mussen. Fur einige Listenoperationen wurde dies bereits in

Eine weitere Möglichkeit ist die Verwendung des Mittelwerts des ersten und des letzten Elements als Pivot-Wert: pivot := b(a[l]:key + a[r]:key)=2c. Sortieren Sie die oben

Schreiben Sie eine Funktion, welche eine Person (oder alternativ einen Pointer auf eine Person) als Parameter erh¨ alt und f¨ ur diese Person folgende Daten ausgibt:. •

BGT ENDE MOVE D0,D6 MULS D6,D6 BSR AUSGABE ADDQ #1,D0 BRA SCHLEIFE ENDE BREAK. Der Befehl BSR AUSGABE bewirkt den Aufruf eines Unterprogramms, das den Inhalt des Registers D6 auf