class

Werbung
6.2 Schlangen
Repräsentationen:
- Feld, zyklisch benutzt (Längenbeschränkung)
- lineares Geflecht, einfach verkettet
- zyklisches Geflecht, einfach verkettet
Anwendungen:
-
Prozeßverwaltung (im Betriebssystem)
Ressourcenverwaltung allgemein
Verwaltung „realer“ Warteschlangen
Simulation zeitdiskreter Systeme
Baum- und Graph-Traversierung
6.3 Imperative Listen
= beliebig manipulierbare Folgen mit Positionen 0,1,2,...
Repräsentationen:
Feld
Felder wechselnder Größe
zyklisches, doppelt verkettetes Geflecht
Anwendungen:
Simulation zeitdiskreter Systeme
Repräsentation „höherer“ ADT
(z.B. Doppelkopfschlange, Mengen, ...)
Java-Bibliothek java.util:
class Vector
repräsentiert durch Felder wechselnder Größe
Object elementAt(int pos)
throws ArrayIndexOutOfBoundsException
void setElementAt(Object obj, int pos)
throws ArrayIndexOutOfBoundsException
void insertElementAt ...
...
class Stack extends Vector
(Collections Framework:)
interface Collection
interface List extends Collection
.....
class ArrayList implements List
(ähnlich wie Vector)
class LinkedList implements List
(doppelt verkettet)
.....
6.4 Zeichenketten
(Java-Bibliothek java.lang:)
class String
konstante Objekte („immutable objects“),
als Bytefolgen repräsentiert
class StringBuffer
veränderlich (ähnlich Vector)
6.5 Traversieren von Folgen
= Durchlaufen aller Elemente einer Folge (oder Menge oder ...)
z.B. „alle Mitarbeiter erhalten 3% Gehaltserhöhung“
funktional einfach, z.B.
map f l = [ f x | x<-l ]
map
:: (a->b) -> [a] -> [b]
foldl
:: (a->b->a) -> a -> [b] -> a
filter :: (a->Bool) -> [a] -> [a]
.....
imperativ:
ohne Datenabstraktion, z.B. Traversieren eines Feldes mit
public static <T> void map(Function<T> f, T[] a) {
for(int i=0; i++<a.length; )
a[i] = f.call(a[i]);
}
Externe Iteratoren zum Traversieren abstrakter Folgen
(unterstützt durch java.util)
Interne Iteratoren zum abstrakten Traversieren abstrakter Folgen
Herunterladen