• Keine Ergebnisse gefunden

Aufgabe 2: Doppelt verkettete Listen

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe 2: Doppelt verkettete Listen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übungen zur Vorlesung

GRUNDLAGEN DERINFORMATIKI Studiengang Elektrotechnik

WS 02/03

AG Betriebssysteme FB3 Kirsten Berkenkötter Ausgabe: 7.1.2003 Besprechung: 9.1./16.1.2003 Abgabe: 16.1.2003

Übungszettel 5

Anmerkung: Die Punkte 1., 2. und 3. aus Aufgabe 2 gelten jeweils als eingenständige Aufgabe, es können also insgesamt vier Leute vorrechnen!

Aufgabe 1: Mehrdimensionale Arrays

Es soll ein Programm geschrieben werden, dass zwei Matrizen der Größe 5x5 addiert. Dies soll in einer Funktion mit folgendem Aussehen geschehen:

void matrixadd(int a[5][5], int b[5][5], int result[5][5])

Im Hauptprogramm sollen zwei Matrizen deklariert und mit Werten belegt werden. Diese wer- den dann zusammen mit einer Ergebnismatrix als Zeiger an die Funktion übergeben (Arrays können nicht von Funktionen zurückgegeben werden). Zu guter Letzt sollen alle drei Matrizen zur Ergebnisüberprüfung ausgegeben werden.

Aufgabe 2: Doppelt verkettete Listen

In der Vorlesung wurde die Datenstrukur Liste zunächst in der einfach verketteten Form vor- gestellt (Programmmylist.c, erhältlich auf der Webseite unter Veranstaltungsinhalte -> Session 5 -> Hintergrundinformationen), d.h. jedes Element der Liste enthält einen Zeiger auf seinen Nachfolger. Dieses Programm soll nun zu einer doppelt verketteten Liste erweitert werden.

Doppelt verkettete Listen enthalten neben dem Zeiger auf das nachfolgende Element auch einen Zeiger auf das vorhergehende. Damit ist es möglich, die Liste sowohl vorwärts als auch rückwärts zu durchlaufen. Dies vereinfacht viele mögliche Operationen auf Listen wie Suchen von Elementen, Einfügen neuer Elemente an einer bestimmten Position und das Löschen be- stimmter Elemente, da man die Liste in beide Richtungen durchlaufen kann, anstatt stets wie- der von vorne zu suchen.

Damit ändert sich die Datenstruktur für ein Listenelement wie folgt:

struct list_element_t {

userdata_t data; //eigentliche Daten

struct list_element_t *next; //Zeiger auf das nächste Element struct list_element_t *previous; //Zeiger auf das vorherige Element };

(2)

Dementsprechend müssen auch einige der Funktionen für die Liste modifiziert, bzw. neu ge- schrieben werden.

1. Ändert die FunktionappendList() 2. Ändert die FunktioninsertList()

3. Schreibt eine FunktiontraverseListBackward(), die analog zutraverseList() die Liste rück- wärts anstatt vorwärts traversiert

Die einfach verkettete Listemylist.caus der Vorlesung soll als Grundlage dienen, die ursprüng- lichen Funktionen müssen also lediglich für eine doppelt verkettete Liste abgeändert werden.

Referenzen

ÄHNLICHE DOKUMENTE

Skizziere an einem Beispiel, welche Zeiger beim Einf¨ ugen eines neuen Elementes in eine bereits vorhandene Liste in welcher Form umgeh¨ angt werden

Die folgenden Fragen beziehen sich immer auf eine einfach verkettete, sortierte Liste oder deren Elemente.. Wie viele Nachfolger hat

Implementieren Sie eine Zahlenmenge mit Hilfe einer linearen Liste (Hinweise: Ein Menge enthält niemals mehrere Exemplare der

Implementieren Sie eine doppelt verkettete Liste für Objekte in der Klasse LinkedList.. Die Schnittstelle ist durch die abstrakte Klasse List gegeben (für Methodenbeschreibungen

1) Einfügen eines neuen Knotens: Liste war leer.. Grafische Darstellung einer verketteten Liste:3. 2) Einfügen eines neuen Knotens am Anfang.. Grafische Darstellung einer

• Im Gegensatz zu einfach verketteten Listen haben doppelt verkettete Listen in den Knoten eine zusätzliche Instanzvariable für die Referenz auf den Vorgängerknoten. class Node

Eine doppelt verkettete Liste speichert die Listenelemente als Kette, wobei jedes Listenelement seinen Nachfolger und Vorgänger kennt.. z.B.. Verkettete

struct dolili *elem_ptr = NULL; // Erzeugen eines Zeigers auf ein Element der Liste Damit Sie dynamisch neue Elemente einer Liste hinzufügen können, müssen Sie einen Teil des