Lehrstuhl für Informatik 3 – Prof. Dr.-Ing. M. Nagl RWTH Aachen Grundgebiete der Informatik 2 Lösungsvorschlag zur Probeklausur Prof. Dr.-Ing. M. Nagl.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Imperative Programmierung
Klassen - Verkettete Liste -
Zusammenfassung der Vorwoche
Kapitel 6. Suchverfahren
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Imperative Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
early binding (frühe Bindung) late binding (späte Bindung)
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Einführung in die Programmierung
Einführung in die Programmierung
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Einführung in die Programmierung
 Präsentation transkript:

Lehrstuhl für Informatik 3 – Prof. Dr.-Ing. M. Nagl RWTH Aachen Grundgebiete der Informatik 2 Lösungsvorschlag zur Probeklausur Prof. Dr.-Ing. M. Nagl Simon Becker Ulrike Ranger René Wörzberger

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 a) (1) Beschreiben Sie den Unterschied zwischen Call-by- Value und Call-by-Reference. –CbV: Wert wird kopiert, Änderungen nicht beim Aufrufer sichtbar. –CbR: Anderer Name für übergebene Variable, Änderungen beim Aufrufer sichtbar.

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 a) (2) void SortStraightSelection(FeldTyp *feld, int start, int ende) { char elem; int k; for (int i = start; i <= ende - 1; i++) { k = i; elem = (*feld)[i]; for (int j = i + 1; j <= ende; j++) { if ((*feld)[j] == elem) { … } … } start++; } int main() { FeldTyp feld = { 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; int start = 0, schluss = 7; SortStraightSelection(&feld, start, schluss); … } 0x etecnhik…… feld(main) 0x feld(SSS)

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 a) (3) void SortStraightSelection(FeldTyp &feld, int start, int ende) { char elem; int k; for (int i = start; i <= ende - 1; i++) { k = i; elem = feld[i]; for (int j = i + 1; j <= ende; j++) { if (feld[j] == elem) { … } … } int main() { FeldTyp feld = { 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; int start = 0, schluss = 7; SortStraightSelection(feld, start, schluss); … } 0x etecnhik…… feld(main) 0x feld(SSS)

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 b) Worin besteht der wesentliche Unterschied zwischen einem Feld und einem Verbund? –Feld ist Zusammenfassung von Werten des gleichen Typs. typedef char FeldTyp[100]; FeldTyp feld ={ 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; –Verbund ist Zusammenfassung unterschiedlicher Komponenten. struct Person{ string Name; int Alter; string Adresse; }

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 c) Wie ist die Lebensdauer einer lokalen Variablen definiert? –Nur innerhalb des Blocks, in dem die Deklaration steht. void SortStraightSelection(FeldTyp *feld, int start, int ende) { char elem; for (int i = start; i <= ende - 1; i++) { int k = i; elem = (*feld)[i]; for (int j = i + 1; j <= ende; j++){ … } } int main() { FeldTyp feld = { 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; int start = 0, schluss = 7; SortStraightSelection(&feld, start, schluss); … }

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 d) (1) Im folgenden soll die EBNF für die einfache Programmiersprache EASY angegeben werden. Beispiel: PROGRAM beispiel ( summe = ; produkt = 5 * ; ) Die Nichtterminalsymbole digit und letter sind gegeben.

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 d) (2) Jedes EASY-Programm ( program ) wird mit dem Schlüsselwort PROGRAM eingeleitet. Anschließend folgt ein Bezeichner ( identifier ) als Programmname. Nach dem Bezeichner können beliebig viele Anweisungen ( assign ) vorkommen. Alle Anweisungen sind innerhalb eines Paares runder Klammern eingeschlossen. program ::= „PROGRAM“ identifier „(“ {assign} „)“ ;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 d) (3) Jedes assign besteht aus einem identifier gefolgt von einem Gleichheitszeichen ( = ). Nach dem Gleichheitszeichen folgt die eigentliche Berechnung, die sich aus zwei Zahlen ( number ) und einem dazwischenliegenden Operator ( operator ) zusammensetzt. Jedes assign wird von einem Semikolon ( ; ) abgeschlossen. assign ::= identifier „=“ number operator number „;“ ;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 d) (4) Da es sich hier um eine einfache Programmiersprache handelt, sind als operator nur die Grundrechenarten +, -, * und / zugelassen. operator ::= „+“ | „-“ | „*“ | „/“ ;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 d) (5) Jede number ist positiv und besteht aus mindestens einem digit. Anschließend kann optional ein Punkt (. ) folgen, hinter dem wieder mindestens ein digit steht. number ::= {digit}+ [ „.“ {digit}+ ] ; oder number ::= digit {digit} [ „.“ digit {digit} ] ;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1 d) (6) Ein Bezeichner ( identifier ) ist eine Folge von letter und digit, wobei jeder Bezeichner mit einem Buchstaben anfangen muss. identifier ::= letter { ( letter | digit )} ;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 1: Anmerkungen Wissensfragen –Frage genau lesen –Auf die Begriffe der Frage eingehen EBNF-Aufgabe –Terminalsymbole markieren (alle!) –EBNF-Syntax (nicht Syntaxdiagramm) –{ } vs. { } + –Text genau lesen

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 2 a) void SortStraightSelection(FeldTyp &feld; int start, int ende) { char elem; int k; for (int i = start; i <= ende - 1; i++) { k = i; elem = feld[i]; for (int j = i + 1; j <= ende; j++) { if (feld[j] == elem) { k = j; elem = feld[j]; } } feld[k] = feld[i]; feld[i] = elem; } return 0; } int main() { FeldTyp feld ={ 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; SortStraightSelection(feld, 0, 7); for (i = 0; i < 8; i++) { std::cout << feld[i]; } return 0;} void SortStraightSelection(FeldTyp &feld, int start, int ende) { char elem; int k; for (int i = start; i <= ende - 1; i++) { k = i; elem = feld[i]; for (int j = i + 1; j <= ende; j++) { if (feld[j] == elem) { k = j; elem = feld[j]; } } feld[k] = feld[i]; feld[i] = elem; } return 0; } int main() { FeldTyp feld ={ 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; SortStraightSelection(feld, 0, 7); for (i = 0; i < 8; i++) { std::cout << feld[i]; } return 0;} void SortStraightSelection(FeldTyp &feld, int start, int ende) { char elem; int k; for (int i = start; i <= ende - 1; i++) { k = i; elem = feld[i]; for (int j = i + 1; j <= ende; j++) { if (feld[j] == elem) { k = j; elem = feld[j]; } } feld[k] = feld[i]; feld[i] = elem; } // return 0; } int main() { FeldTyp feld ={ 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; SortStraightSelection(feld, 0, 7); for (i = 0; i < 8; i++) { std::cout << feld[i]; } return 0;} void SortStraightSelection(FeldTyp &feld, int start, int ende) { char elem; int k; for (int i = start; i <= ende - 1; i++) { k = i; elem = feld[i]; for (int j = i + 1; j <= ende; j++) { if (feld[j] == elem) { k = j; elem = feld[j]; } } feld[k] = feld[i]; feld[i] = elem; } // return 0; } int main() { FeldTyp feld ={ 'e', 't', 'e', 'c', 'h', 'n', 'i', 'k' }; SortStraightSelection(feld, 0, 7); for (int i = 0; i < 8; i++) { std::cout << feld[i]; } return 0;}

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 2 b) void f(int *b, int &c) { int a = 2; *b += 3; c = (*b)*a; } int main() { int y = 2, z = 4; f(&y, z); return 0; } yz Nach 1. Aufruf Nach 2. Aufruf

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 2: Anmerkungen Syntaxfehler suchen –Keine Semantik Fehler suchen („Das Feld wird nicht ganz durchlaufen.“, oder „Der Algorithmus sortiert falsch.“) –Kein falscher Vergleichsoperator in std::cout << … –Derselbe Buchstabe kann öfter in einem char -Feld auftauchen –Nicht nötig: using namespace std; Laufzeitsemantik –Auf Papier durchspielen

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 3a a)Deklaration des Verbundtyps Schueler bestehend aus zwei Komponenten 1.Variante2. Variante struct Schueler { string name; int note; }; typedef struct { string name; int note; } Schueler; beliebte Fehler: Abschließendes Semikolon vergessen Verwechselung Verbund- mit Feldtyp Falsche Typen für die Komponenten (Text lesen!)

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 3b und 3c b)Konstante ganze Zahl deklarieren und 10 zuweisen const int KLASSENGROESSE = 10; oder int const KLASSENGROESSE = 10; c)Feldtyp KlausurErg_FT definieren. Elemente sind Schueler. Größe ist KLASSENGROESSE+1. typedef Schueler KlausurErg_FT[KLASSENGROESSE+1]; Beliebter Fehler: Datenobjekt statt Typ deklariert.

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 3d (1. Schritt) Deklaration eines Ganzzahlfeldes anz der Größe 7 und Initialisierung mit 0 für jedes Element (aus anz[0] ) ??????? anz (vorher) ? anz (nachher) int anz[7]; for (int j = 1; j <= 6; j++) { anz[j] = 0; } Beliebte Fehler: Felddeklaration vergessen Deklaration der Laufvariablen vergessen „Off-by-one-Fehler“

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 3d (2. Schritt) Berechnung der Notenhäufigkeit in feld. for (int i = 1; i <= feldgroesse; i++) { int j = feld[i].note; anz[j]++; } Beliebte Fehler:.note vergessen. Evaluiert dann zum Verbund statt zur Note Umständliche Feldindizierung for (int k = 1; k <= 6; k++) { if (k == feld[i].note) { anz[k]++; } ? anz (nachher) ? Meier 2 Schm. 1 Beck. 2 Xu 2 Zimm. 4 Heller Haase 5 Rang. 5 Fuß 6 Held feld

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 3d (3. Schritt) Anzahlen aufsummieren ? anz (vorher) ? anz (nachher) for (int j = 1; j <= 5; j++) { anz[j+1] = anz[j] + anz[j+1]; } Hinweis: anz[j+1] += anz[j]; geht auch

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 3d (4. Schritt) Personen von feld mittels anz an richtige Stelle in sortFeld kopieren ? anz (nachher) ? Meier 2 Schm. 1 Beck. 2 Xu 2 Zimm. 4 Heller Haase 5 Rang. 5 Fuß 6 Held feld ? feld for (int i = 1; i <= feldgroesse; i++) { int k = feld[i].note; sortFeld[anz[k]] = feld[i]; anz[k]--; }

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 a) struct ListElem { string Name; string Strasse; string Stadt; ListElem *next; ListElem *previous; } ListElem *head;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 b) Addrs_insert : neues Element an richtiger Stelle einfügen Spezialfälle: –Am Anfang einfügen ( findElementBefore gibt NULL zurück) –Kein Nachfolger (Also Vorsicht beim Setzen des previous - Zeigers des Nachfolgers) Aufgaben: –neues Element erstellen und initialisieren (vorgegeben) –Einfügestelle bestimmen (Aufruf von findElementBefore ist vorgegeben) –Einhängen (vorne oder hinter passendem Element) –Dabei doppelte Verzeigerung beachten

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 b) (1) void Addrs_insert(string name, …) { ListElem *newElem = new ListElem; newElem->Name=name; //… ListElem *before=findElementBefore(name); if (before!=NULL) { //… } else { //… } Element erzeugen und initialisieren hinter Vorgänger einfügen und Rest verzeigern Am Anfang einfügen, behandelt auch Rest der Liste Einfüge- stelle Vorgänger gefunden?

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 b) (2) if (before!=NULL) { newElem->next=before->next if (newElem->next!=NULL) newElem->next->previous=newElem; before->next=newElem; newElem->previous=before; } else { //… } newElem before Prüfen: existiert dieses Element

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 b) (2) } else { // before==NULL, Einfügen am Anfang newElem->next=head; if (head!=NULL) head->previous=newElem; head=newElem; newElem->previous=NULL; } newElem head Prüfen: existiert dieses Element

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 c) findElementBefore : Finde Element mit größtem Namen, der kleiner ist als der übergebene. Spezialfälle: –Liste ist Leer. –es gibt kein Element mit einem kleineren Namen. –Element muss hinten angehängt werden. Aufgaben: –Liste leer? –Erstes Element größer als übergebener Name? –Durch Liste laufen, bis nächstes Element größer. verschiedene Möglichkeiten durch doppelte Verzeigerung der Liste

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 c) ListElem *findElementBefore(string name) { ListElem *current=head; if (head==NULL || head->name>name) return NULL; while (current->next!=NULL && current->next->name<name) { current=current->next; } return current; } Liste leer oder 1. El. größer Laufe bis zum letzten El. oder bis nächster Name größer. Reihenfolge!

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 c) Alternativen Weitere Möglichkeiten: 1.Liste von vorne bis hinten bzw. zum ersten größeren Element durchlaufen, dabei in zweitem Laufzeiger immer das vorherige Element merken. 2.Liste von vorne bis hinten bzw. zum ersten größeren Element durchlaufen und mit ->previous den Vorgänger ermitteln. Vorsicht: wenn Laufzeiger gleich NULL, dann ->previous nicht gültig, daher Sonderfall für Listenanfang

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 c) Alternative 1 ListElem *previous=NULL; ListElem *current=head; while (current!=NULL && current->Name<name) { previous=current; current=current->next; } return previous;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4 c) Alternative 2 ListElem *current=head; while (current!=NULL) { if (current->Name<name) { if (current->next!=NULL) { current=current->next; } else { return current; } } else { return current->previous; } return NULL;

Grundgebiete der Informatik 2 – Prof. Dr.-Ing. M. Nagl Aufgabe 4: Anmerkungen Nicht alle Teile einer Datenstruktur in einem struct head nicht vergessen! Beim Laufen durch Datenstrukturen nicht den Anker verändern. Aufgabenstellung lesen: –findElementBefore verwenden, –Kopfzeiger ( head ) deklarieren –kein Array –hier waren nur 3 strings gefragt, keine weiteren Daten Spezialfälle –Anker umsetzen –vor Zugriff auf Komponente prüfen, ob Zeiger auf Objekt != NULL