AuD Übung 06 (Stefan Bosse) [17.12.2024] |
Punkte: | Total | /2 | 1. | /2 | 2. | /2 | 3. | /2 | 4. | /2 | 5. | /2 | 6. | /2 |
Es dürfen keine Standard Java Packages verwendet werden mit Ausnahme von System und String.
Der Java Code wird separat als klassisches natives Java Projekt abgegeben. Die wesentlichen Teile sollen aber zum Zwecke der Dokumentation hier in den Code Snippets eingetragen werden (unabhängig ob sie damit ausführbar sind oder nicht).
Aufgabe 1. Erkläre den Unterschied zwischen applikativen und imperativen Algorithmen (und Programmiersprachen).
Aufgabe 2. Nenne drei wesentliche Entwurfsprinzipien und erkläre jeder mit einem Satz.
In dieser Aufgabe soll ein einfaches Speichermanagement mit Listen implementiert werden. Es sollen zwei Ansätze untersucht werden:
Es gibt einen Hauptspeicher eines Rechners der eine Größe von N Bytes haben soll. Dieser ist zunächst frei. Dann werden in Folge Speicherbereiche angefragt (allocate) und auch wieder zurück gegeben (release).
Es solle eine Liste aller freien Bereiche verwaltet werden. Zunächst gibt es nur ein Element mit dem gesamtem Speicherbereich.
Speicher allocate(m1) allocate(m2)
│ 0 ┌――――――――┐ ┌――――――――┐ ┌――――――――┐
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ │ │ belegt │ │ belegt │
│ │ │ │ │ │ │
│ │ │ ├――――――――┤ ├――――――――┤
│ │ │ │ │ │ belegt │
│ │ │ │ │ │ │
│ │ frei │ │ │ ├――――――――┤
│ │ │ │ │ │ │
│ │ │ │ frei │ │ │
│ │ │ │ │ │ │
│ │ │ │ │ │ frei │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
▼ N-1 └――――――――┘ └――――――――┘ └――――――――┘
Es wird znächst die FirstFit Belegungsmethode verwendet. D.h. wenn ein Speicherbereich mit eine bestimmten Größe n Bytes angefragt wird findet ein Suche in der Lister der freien Blöcke statt bis ein Block gefunden wird der mindestens der gesuchten Größe n entspricht.
Ein freier Block wird am Anfang geteilt wenn Speicher belegt werden soll. Also z.B. gibt es einen freien Bereich [1000,1100] und es sollen 50 Bytes belegt werden. Dann ist danach der freie Block [1050,1100], und es wird der Bereich [1000,1049] als belegter Bereich verwendet.
Die Allokation soll immer die Startadresse (im Beispiel 1000) und die Endadresse (im Beispiel 1049) des Bereichs zurückgeben.
Die Freigabe eines Blocks erzeugt in der Liste ein weiteres Element.
Sowohl belegte als auch freie Blöcke werden einheitlich mit einer Datenstruktur / Objektklasse Block verwaltet:
Block = {
start : number,
end : number,
flag : number // 0:frei, 1:belegt
}
[0,999]
allocate(10) -> [0,9]
[10,999]
allocate(20) -> [10,19]
[20,999]
release([0,9])
[20,999],[0,9]
allocate(5) -> [20,24]
[25,999],[0,9]
release([10,19])
[25,999],[0,9],[10,19]
In einer zweiten Strategie soll das BestFit Verfahren verwendet werden welches den kleinsten frein Block sucht der mindestens n Bytes umfasst. Das obige Beispiel ändert sich dann.
[0,999]
allocate(10) -> [0,9]
[10,999]
allocate(20) -> [10,19]
[20,999]
release([0,9])
[20,999],[0,9]
allocate(5) -> [0,4]
[25,999],[5,9]
release([10,19])
[25,999],[5,9],[10,19]
function firstFit(L,size) {
node=L.head
while (node && (node.end-node.start+1)<size) {
node=node.next
}
return node
}
function bestFit(L,size) {
node=L.head
best=null
while (node) {
s1=(node.end-node.start+1)
if (s1>=size && !best) best=node
s2=(best.end-best.start+1)
if (s1>=size && s2>s1) {
best=node
}
node=node.next
}
return best
}
Bisher wurden die freien Blöcke immer am Ende der Liste angehängt. Wir wollen hier drei Verfahren untersuchen:
Jetzt brauchen wir noch eine Datenstruktur / Objektklasse für die Verkettung:
M=Memory(N=50)
B1=allocate(M,10)
B2=allocate(M,20)
release(B1)
B3=allocate(M,5)
release(B2)
print(M)
B4=allocate(M,5)
print(M)
rlease(B3)
B5=allocate(M,4)
print(M)
Aufgabe 3. Die Daten der Listenelemente werden durch die Klasse Block implementiert. Implementiere die Klasse Block.
▸
ℂ
ℙ
[] |
✗
≡
|
Y2xhc3MgQmxvY2sgewogIGludCBzdGFydDsKICBpbnQgZW5kOwogIGludCBmbGFnOwogIHB1YmxpYyBCbG9jayAoaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgZmxhZykgewogICAgdGhpcy5zdGFydD1zdGFydDsKICAgIHRoaXMuZW5kPWVuZDsKICAgIHRoaXMuZmxhZz1mbGFnOwogIH0KICBwdWJsaWMgaW50IGdldFN0YXJ0ICgpIHsKICAgIHJldHVybiB0aGlzLnN0YXJ0OwogIH0KICBwdWJsaWMgaW50IGdldEVuZCAoKSB7CiAgICByZXR1cm4gdGhpcy5lbmQ7CiAgfQogIHB1YmxpYyBpbnQgZ2V0RmxhZyAoKSB7CiAgICByZXR1cm4gdGhpcy5mbGFnOwogIH0KICBwdWJsaWMgaW50IGdldExlbmd0aCAoKSB7CiAgICByZXR1cm4gdGhpcy5lbmQtdGhpcy5zdGFydCsxOwogIH0KfQ==
Aufgabe 4. Die Daten der Listenelemente werden durch die Klasse Node1 als einfach verkettete Liste verbunden. Implementiere die Klasse List1 die die Klasse *Node1' verwendet.
▸
ℂ
ℙ
[] |
✗
≡
|
Y2xhc3MgTm9kZTEgewogIEJsb2NrIGRhdGE7CiAgTm9kZTEgbmV4dDsKICBwdWJsaWMgTm9kZTEoQmxvY2sgZGF0YSkgewogICAgdGhpcy5kYXRhPWRhdGE7CiAgICB0aGlzLm5leHQ9bnVsbDsKICB9Cn0=
▸
ℂ
ℙ
[] |
✗
≡
|
Y2xhc3MgTGlzdDEgewogIE5vZGUxIGhlYWQ7CiAgY2hhciBhbGxvY2FNZXRob2Q7CiAgY2hhciBpbnNlcnRNZXRob2Q7CiAgcHVibGljIExpc3QxKGNoYXIgYWxsb2NhTWV0aG9kLGNoYXIgaW5zZXJ0TWV0aG9kKSB7CiAgICAvLyBhbGxvY2FNZXRob2QgPSAnQicgfCAnRicgQmVzdEZpdCAvIEZpcnN0Rml0CiAgICAvLyBpbnNlcnRNZXRob2QgPSAnSCcgfCAnVCcgfCAnUycKICAgIHRoaXMuYWxsb2NhTWV0aG9kPWFsbG9jYU1ldGhvZDsKICAgIHRoaXMuaW5zZXJ0TWV0aG9kPWluc2VydE1ldGhvZDsKICAgIHRoaXMuaGVhZD1udWxsOwogIH0KICBwdWJsaWMgdm9pZCByZW1vdmUoTm9kZTEgbm9kZSkgewogICAgTm9kZTEgbmV4dD10aGlzLmhlYWQ7CiAgICBOb2RlMSBwcmV2PXRoaXMuaGVhZDsKICAgIHdoaWxlIChuZXh0ICYmIG5leHQuZGF0YS5zdGFydCE9bm9kZS5kYXRhLnN0YXJ0KSB7CiAgICAgIHByZXYgPSBuZXh0OwogICAgICBuZXh0ID0gbmV4dC5uZXh0OwogICAgfQogICAgaWYgKCFuZXh0KSB0aHJvdyAiRUlOVkFMSUQiOwogICAgaWYgKHByZXYuZGF0YS5zdGFydD09bmV4dC5kYXRhLnN0YXJ0KSB0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQ7CiAgICBlbHNlIHByZXYubmV4dD1uZXh0Lm5leHQ7CiAgfQogIHB1YmxpYyB2b2lkIGluc2VydChOb2RlMSBub2RlKSB7CiAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0TWV0aG9kKSB7CiAgICAgIGNhc2UgJ0gnOiB0aGlzLmluc2VydEhlYWQobm9kZSk7IHJldHVybjsKICAgICAgY2FzZSAnVCc6IHRoaXMuaW5zZXJ0VGFpbChub2RlKTsgcmV0dXJuOwogICAgICBjYXNlICdTJzogdGhpcy5pbnNlcnRTb3J0ZWQobm9kZSk7IHJldHVybjsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0SGVhZChOb2RlMSBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBub2RlLm5leHQ9dGhpcy5oZWFkOwogICAgICB0aGlzLmhlYWQ9bm9kZTsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0VGFpbChOb2RlMSBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBOb2RlMSBuZXh0PXRoaXMuaGVhZDsKICAgICAgd2hpbGUgKG5leHQubmV4dCkgewogICAgICAgIG5leHQ9bmV4dC5uZXh0OwogICAgICB9CiAgICAgIG5leHQubmV4dD1ub2RlOwogICAgfQogIH0KICBwdWJsaWMgdm9pZCBpbnNlcnRTb3J0ZWQoTm9kZTEgbm9kZSkgewogICAgaWYgKHRoaXMuaGVhZD09bnVsbCkgdGhpcy5oZWFkPW5vZGU7CiAgICBlbHNlIHsKICAgICAgTm9kZTEgcHJldj10aGlzLmhlYWQ7CiAgICAgIE5vZGUxIG5leHQ9dGhpcy5oZWFkOwogICAgICB3aGlsZSAobmV4dCAmJiBuZXh0Lm5leHQgJiYgbmV4dC5uZXh0LmRhdGEuc3RhcnQ8bm9kZS5kYXRhLnN0YXJ0KSB7CiAgICAgICAgcHJldj1uZXh0OwogICAgICAgIG5leHQ9bmV4dC5uZXh0OwogICAgICB9CiAgICAgIHByZXYubmV4dD1ub2RlOwogICAgICBub2RlLm5leHQ9bmV4dDsKICAgIH0KICB9CiAgcHVibGljIEJsb2NrIGFsbG9jYXRlKGludCBzaXplKSB7CiAgICBOb2RlMSBuZXh0LGJlc3QsYWRkcjsKICAgIHN3aXRjaCAodGhpcy5hbGxvY2FNZXRob2QpIHsKICAgICAgY2FzZSAnRic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgd2hpbGUobmV4dCAmJiAobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghbmV4dCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gbmV4dC5kYXRhLnN0YXJ0OwogICAgICAgIG5leHQuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAobmV4dC5kYXRhLnN0YXJ0PT1uZXh0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUobmV4dCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnQic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgYmVzdD1udWxsOwogICAgICAgIHdoaWxlKG5leHQpIHsKICAgICAgICAgIGlmICgobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgICBpZiAoIWJlc3QpIGJlc3Q9bmV4dDsKICAgICAgICAgICAgZWxzZSBpZiAoKG5leHQuZGF0YS5lbmQtbmV4dC5kYXRhLnN0YXJ0KzEpPChiZXN0LmRhdGEuZW5kLWJlc3QuZGF0YS5zdGFydCsxKSkgYmVzdD1uZXh0OwogICAgICAgICAgfQogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghYmVzdCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gYmVzdC5kYXRhLnN0YXJ0OwogICAgICAgIGJlc3QuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAoYmVzdC5kYXRhLnN0YXJ0PT1iZXN0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUoYmVzdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgcmVsZWFzZShCbG9jayBibG9jaykgewogICAgYmxvY2suZmxhZz0wOwogICAgdGhpcy5pbnNlcnQobmV3IE5vZGUxKGJsb2NrKSk7CiAgfQogIHB1YmxpYyB2b2lkIHByaW50KCkgewogICAgTm9kZTEgbmV4dD10aGlzLmhlYWQ7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj09PT09PT09IE1FTU9SWSA9PT09PT09PT09Iik7CiAgICB3aGlsZSAobmV4dCkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV4dC5kYXRhLnN0YXJ0KyIgICIrbmV4dC5kYXRhLmVuZCsiICAiK25leHQuZGF0YS5mbGFnKTsKICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICB9CiAgfQp9
▸
ℂ
ℙ
[] |
✗
≡
|
Aufgabe 5. Die Daten der Listenelemente werden durch die Klasse Node2 als doppelt verkettete Liste verbunden. Implementiere die Klasse List2 die die Klasse *Node2' verwendet.
▸
ℂ
ℙ
[] |
✗
≡
|
Y2xhc3MgTm9kZTIgewogIEJsb2NrIGRhdGE7CiAgTm9kZTIgbmV4dDsKICBOb2RlMiBwcmV2OwogIHB1YmxpYyBOb2RlMihCbG9jayBkYXRhKSB7CiAgICB0aGlzLmRhdGE9ZGF0YTsKICAgIHRoaXMubmV4dD1udWxsOwogICAgdGhpcy5wcmV2PW51bGw7CiAgfQp9
▸
ℂ
ℙ
[] |
✗
≡
|
Y2xhc3MgTGlzdDIgewogIE5vZGUyIGhlYWQ7CiAgY2hhciBhbGxvY2FNZXRob2Q7CiAgY2hhciBpbnNlcnRNZXRob2Q7CiAgcHVibGljIExpc3QyKGNoYXIgYWxsb2NhTWV0aG9kLGNoYXIgaW5zZXJ0TWV0aG9kKSB7CiAgICAvLyBhbGxvY2FNZXRob2QgPSAnQicgfCAnRicgQmVzdEZpdCAvIEZpcnN0Rml0CiAgICAvLyBpbnNlcnRNZXRob2RlID0gJ0gnIHwgJ1QnIHwgJ1MnCiAgICB0aGlzLmFsbG9jYU1ldGhvZD1hbGxvY2FNZXRob2Q7CiAgICB0aGlzLmluc2VydE1ldGhvZD1pbnNlcnRNZXRob2Q7CiAgICB0aGlzLmhlYWQ9bnVsbDsKICB9CiAgcHVibGljIHZvaWQgcmVtb3ZlKE5vZGUxIG5vZGUpIHsKICAgIE5vZGUyIG5leHQ9dGhpcy5oZWFkOwogICAgd2hpbGUgKG5leHQgJiYgbmV4dC5kYXRhLnN0YXJ0IT1ub2RlLmRhdGEuc3RhcnQpIHsKICAgICAgbmV4dCA9IG5leHQubmV4dDsKICAgIH0KICAgIGlmICghbmV4dCkgdGhyb3cgIkVJTlZBTElEIjsKCiAgICBpZiAodGhpcy5oZWFkLmRhdGEuc3RhcnQ9PW5leHQuZGF0YS5zdGFydCkgdGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0OwogICAgZWxzZSBuZXh0LnByZXYubmV4dD1uZXh0Lm5leHQ7CiAgfQogIHB1YmxpYyB2b2lkIGluc2VydChOb2RlMiBub2RlKSB7CiAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0TWV0aG9kKSB7CiAgICAgIGNhc2UgJ0gnOiB0aGlzLmluc2VydEhlYWQobm9kZSk7IHJldHVybjsKICAgICAgY2FzZSAnVCc6IHRoaXMuaW5zZXJ0VGFpbChub2RlKTsgcmV0dXJuOwogICAgICBjYXNlICdTJzogdGhpcy5pbnNlcnRTb3J0ZWQobm9kZSk7IHJldHVybjsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0SGVhZChOb2RlMiBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBub2RlLm5leHQ9dGhpcy5oZWFkOwogICAgICB0aGlzLmhlYWQ9bm9kZTsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0VGFpbChOb2RlMiBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBOb2RlMiBuZXh0PXRoaXMuaGVhZDsKICAgICAgd2hpbGUgKG5leHQubmV4dCkgewogICAgICAgIG5leHQ9bmV4dC5uZXh0OwogICAgICB9CiAgICAgIG5leHQubmV4dD1ub2RlOwogICAgfQogIH0KICBwdWJsaWMgdm9pZCBpbnNlcnRTb3J0ZWQoTm9kZTIgbm9kZSkgewogICAgaWYgKHRoaXMuaGVhZD09bnVsbCkgdGhpcy5oZWFkPW5vZGU7CiAgICBlbHNlIHsKICAgICAgTm9kZTIgbmV4dD10aGlzLmhlYWQ7CiAgICAgIHdoaWxlIChuZXh0ICYmIG5leHQubmV4dCAmJiBuZXh0Lm5leHQuZGF0YS5zdGFydDxub2RlLmRhdGEuc3RhcnQpIHsKICAgICAgICBuZXh0PW5leHQubmV4dDsKICAgICAgfQogICAgICBuZXh0LnByZXYubmV4dD1ub2RlOwogICAgICBub2RlLm5leHQ9bmV4dDsKICAgIH0KICB9CiAgcHVibGljIEJsb2NrIGFsbG9jYXRlKGludCBzaXplKSB7CiAgICBOb2RlMSBuZXh0LGJlc3QsYWRkcjsKICAgIHN3aXRjaCAodGhpcy5hbGxvY2FNZXRob2QpIHsKICAgICAgY2FzZSAnRic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgd2hpbGUobmV4dCAmJiAobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghbmV4dCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gbmV4dC5kYXRhLnN0YXJ0OwogICAgICAgIG5leHQuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAobmV4dC5kYXRhLnN0YXJ0PT1uZXh0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUobmV4dCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnQic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgYmVzdD1udWxsOwogICAgICAgIHdoaWxlKG5leHQpIHsKICAgICAgICAgIGlmICgobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgICBpZiAoIWJlc3QpIGJlc3Q9bmV4dDsKICAgICAgICAgICAgZWxzZSBpZiAoKG5leHQuZGF0YS5lbmQtbmV4dC5kYXRhLnN0YXJ0KzEpPChiZXN0LmRhdGEuZW5kLWJlc3QuZGF0YS5zdGFydCsxKSkgYmVzdD1uZXh0OwogICAgICAgICAgfQogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghYmVzdCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gYmVzdC5kYXRhLnN0YXJ0OwogICAgICAgIGJlc3QuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAoYmVzdC5kYXRhLnN0YXJ0PT1iZXN0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUoYmVzdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgcmVsZWFzZShCbG9jayBibG9jaykgewogICAgYmxvY2suZmxhZz0wOwogICAgdGhpcy5pbnNlcnQobmV3IE5vZGUyKGJsb2NrKSk7CiAgfQogIHB1YmxpYyB2b2lkIHByaW50KCkgewogICAgTm9kZTIgbmV4dD10aGlzLmhlYWQ7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj09PT09PT09IE1FTU9SWSA9PT09PT09PT09Iik7CiAgICB3aGlsZSAobmV4dCkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV4dC5kYXRhLnN0YXJ0KyIgICIrbmV4dC5kYXRhLmVuZCsiICAiK25leHQuZGF0YS5mbGFnKTsKICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICB9CiAgfQp9
▸
ℂ
ℙ
[] |
✗
≡
|
Aufgabe 6. Welcher Belegungsalgorithmus liefert bei den Testfällen am Ende das beste Ergebnis (also am wenigstens Fragmentierung)? Wie hängt das Ergebnis von der Einfügestrategie ab? Bietet die doppelt verkettete Liste Vorteile, wenn ja bei welchen Fällen?