Klasse Entry ============ Einträge in einem Telefonbuch Eigenschaften: Name Vorwahl Nummer Klasse PhoneBook ================ Operationen: Einfügen eines neuen Eintrags mit Name, Vorwahl und Nummer Zugriff und Springen auf den ersten Eintrag Zugriff und Springen auf den nächsten Eintrag Zugriff und Springen auf den ersten Eintrag mit bestimmten Namen Zugriff und Springen auf einen Eintrag mit bestimmten Namen Abfrage, ob noch weitere Einträge vorhanden sind Verwendet intern eine lineare Liste von Einträgen sortiert nach Namen (Klasse EntryList) Verwendet eine Indexstruktur, um für die Buchstaben den Zugriff auf den ersten Eintrag zu speichern (Klasse PhoneBookIndex) Verwendet einen Cursor, um einen aktuellen Eintrag zu speichern und damit das Blättern im Telefonbuch zu realisieren Klasse EntryList ================ Lineare verkettete Liste für Entry-Objekte Verwendet EntryNode für die Verkettung Operationen: Sortiertes Einfügen eines Eintrags mit Namen, Vorwahl und Nummer Sortiertes Einfügen eines Entry-Objektes Suchen nach dem Knoten mit Eintrag mit gegebenen Namen Zugriff auf den ersten Knoten Zugriff auf den nächsten Knoten für einem gegebenen Knoten Prüfen, ob Liste leer ist Klasse EntryNode ================ Knoten für die verkettete lineare Liste Enthält: Referenz zu Entry-Objekt Zeiger auf den nächsten Knoten Klasse PhoneBookIndex ===================== Indexstruktur, um für jeden Buchstaben auf den ersten Eintrag in der lineare Liste zuzugreifen verwendet ein Array der Länge 26 (für jeden Buchstaben), die die Verweise auf die Knoten in der linearen Liste speichern Operationen: Setzen des Knotens für einen gegebenen Buchstaben Zugriff auf den ersten Knoten für einen gegebenen Buchstaben Update des Knotens für einen gegebenen Buchstaben: Ist für den Buchstaben noch kein Knoten eingetragen, oder kommt der neue Eintrag alphabetisch vor dem eingetragenen, wird der neue Knoten in die Indexstruktur eingetragen