AuD Übung 06 (Stefan Bosse) [17.12.2024]

AuD Übung Listen (06)

Gruppennummer und Namen der Gruppenmitglieder (Zeilenformat!)
Punkte:Total/21./22./23./24./25./26./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).

Formale Algorithmenmodelle

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.


Listen

In dieser Aufgabe soll ein einfaches Speichermanagement mit Listen implementiert werden. Es sollen zwei Ansätze untersucht werden:

  1. Einfach verkettete Listen
  2. Zweifach verkettete Listen

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 └――――――――┘      └――――――――┘      └――――――――┘  

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
}
Beispiel 1. Ein mögliches Beispiel (FirstFit) für eine Folge von Belegungen und Freigaben
[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.

Beispiel 2. Ein mögliches Beispiel (BestFit) für eine Folge von Belegungen und Freigaben
[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]
Algorithmus 1. Die Belegungsalgorithmen
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:

  1. Freien Block am Ende anfügen (mit und ohne tail Zugang).
  2. Freien Block am Anfang anfügen.
  3. Freien Block in aufsteigender Sortierung der Startadresse einfügen.

Jetzt brauchen wir noch eine Datenstruktur / Objektklasse für die Verkettung:

  1. List1
  2. List2
Algorithmus 2. Der Testcode
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.


Datenblock Klasse

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

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.


Einfach verkettete Liste Knoten Klasse

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

Y2xhc3MgTm9kZTEgewogIEJsb2NrIGRhdGE7CiAgTm9kZTEgbmV4dDsKICBwdWJsaWMgTm9kZTEoQmxvY2sgZGF0YSkgewogICAgdGhpcy5kYXRhPWRhdGE7CiAgICB0aGlzLm5leHQ9bnVsbDsKICB9Cn0=


Einfach verkettete Liste Klasse für die Speicherverwaltung mit alternativen BestFit oder FirstFit Belegungsalgorithmus. Führe die Tests für alle drei Einfügestrategien durch (siehe oben).

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

Y2xhc3MgTGlzdDEgewogIE5vZGUxIGhlYWQ7CiAgY2hhciBhbGxvY2FNZXRob2Q7CiAgY2hhciBpbnNlcnRNZXRob2Q7CiAgcHVibGljIExpc3QxKGNoYXIgYWxsb2NhTWV0aG9kLGNoYXIgaW5zZXJ0TWV0aG9kKSB7CiAgICAvLyBhbGxvY2FNZXRob2QgPSAnQicgfCAnRicgQmVzdEZpdCAvIEZpcnN0Rml0CiAgICAvLyBpbnNlcnRNZXRob2QgPSAnSCcgfCAnVCcgfCAnUycKICAgIHRoaXMuYWxsb2NhTWV0aG9kPWFsbG9jYU1ldGhvZDsKICAgIHRoaXMuaW5zZXJ0TWV0aG9kPWluc2VydE1ldGhvZDsKICAgIHRoaXMuaGVhZD1udWxsOwogIH0KICBwdWJsaWMgdm9pZCByZW1vdmUoTm9kZTEgbm9kZSkgewogICAgTm9kZTEgbmV4dD10aGlzLmhlYWQ7CiAgICBOb2RlMSBwcmV2PXRoaXMuaGVhZDsKICAgIHdoaWxlIChuZXh0ICYmIG5leHQuZGF0YS5zdGFydCE9bm9kZS5kYXRhLnN0YXJ0KSB7CiAgICAgIHByZXYgPSBuZXh0OwogICAgICBuZXh0ID0gbmV4dC5uZXh0OwogICAgfQogICAgaWYgKCFuZXh0KSB0aHJvdyAiRUlOVkFMSUQiOwogICAgaWYgKHByZXYuZGF0YS5zdGFydD09bmV4dC5kYXRhLnN0YXJ0KSB0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQ7CiAgICBlbHNlIHByZXYubmV4dD1uZXh0Lm5leHQ7CiAgfQogIHB1YmxpYyB2b2lkIGluc2VydChOb2RlMSBub2RlKSB7CiAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0TWV0aG9kKSB7CiAgICAgIGNhc2UgJ0gnOiB0aGlzLmluc2VydEhlYWQobm9kZSk7IHJldHVybjsKICAgICAgY2FzZSAnVCc6IHRoaXMuaW5zZXJ0VGFpbChub2RlKTsgcmV0dXJuOwogICAgICBjYXNlICdTJzogdGhpcy5pbnNlcnRTb3J0ZWQobm9kZSk7IHJldHVybjsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0SGVhZChOb2RlMSBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBub2RlLm5leHQ9dGhpcy5oZWFkOwogICAgICB0aGlzLmhlYWQ9bm9kZTsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0VGFpbChOb2RlMSBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBOb2RlMSBuZXh0PXRoaXMuaGVhZDsKICAgICAgd2hpbGUgKG5leHQubmV4dCkgewogICAgICAgIG5leHQ9bmV4dC5uZXh0OwogICAgICB9CiAgICAgIG5leHQubmV4dD1ub2RlOwogICAgfQogIH0KICBwdWJsaWMgdm9pZCBpbnNlcnRTb3J0ZWQoTm9kZTEgbm9kZSkgewogICAgaWYgKHRoaXMuaGVhZD09bnVsbCkgdGhpcy5oZWFkPW5vZGU7CiAgICBlbHNlIHsKICAgICAgTm9kZTEgcHJldj10aGlzLmhlYWQ7CiAgICAgIE5vZGUxIG5leHQ9dGhpcy5oZWFkOwogICAgICB3aGlsZSAobmV4dCAmJiBuZXh0Lm5leHQgJiYgbmV4dC5uZXh0LmRhdGEuc3RhcnQ8bm9kZS5kYXRhLnN0YXJ0KSB7CiAgICAgICAgcHJldj1uZXh0OwogICAgICAgIG5leHQ9bmV4dC5uZXh0OwogICAgICB9CiAgICAgIHByZXYubmV4dD1ub2RlOwogICAgICBub2RlLm5leHQ9bmV4dDsKICAgIH0KICB9CiAgcHVibGljIEJsb2NrIGFsbG9jYXRlKGludCBzaXplKSB7CiAgICBOb2RlMSBuZXh0LGJlc3QsYWRkcjsKICAgIHN3aXRjaCAodGhpcy5hbGxvY2FNZXRob2QpIHsKICAgICAgY2FzZSAnRic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgd2hpbGUobmV4dCAmJiAobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghbmV4dCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gbmV4dC5kYXRhLnN0YXJ0OwogICAgICAgIG5leHQuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAobmV4dC5kYXRhLnN0YXJ0PT1uZXh0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUobmV4dCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnQic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgYmVzdD1udWxsOwogICAgICAgIHdoaWxlKG5leHQpIHsKICAgICAgICAgIGlmICgobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgICBpZiAoIWJlc3QpIGJlc3Q9bmV4dDsKICAgICAgICAgICAgZWxzZSBpZiAoKG5leHQuZGF0YS5lbmQtbmV4dC5kYXRhLnN0YXJ0KzEpPChiZXN0LmRhdGEuZW5kLWJlc3QuZGF0YS5zdGFydCsxKSkgYmVzdD1uZXh0OwogICAgICAgICAgfQogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghYmVzdCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gYmVzdC5kYXRhLnN0YXJ0OwogICAgICAgIGJlc3QuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAoYmVzdC5kYXRhLnN0YXJ0PT1iZXN0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUoYmVzdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgcmVsZWFzZShCbG9jayBibG9jaykgewogICAgYmxvY2suZmxhZz0wOwogICAgdGhpcy5pbnNlcnQobmV3IE5vZGUxKGJsb2NrKSk7CiAgfQogIHB1YmxpYyB2b2lkIHByaW50KCkgewogICAgTm9kZTEgbmV4dD10aGlzLmhlYWQ7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj09PT09PT09IE1FTU9SWSA9PT09PT09PT09Iik7CiAgICB3aGlsZSAobmV4dCkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV4dC5kYXRhLnN0YXJ0KyIgICIrbmV4dC5kYXRhLmVuZCsiICAiK25leHQuZGF0YS5mbGFnKTsKICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICB9CiAgfQp9


Main Test.

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

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.


Einfach verkettete Liste Knoten Klasse

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

Y2xhc3MgTm9kZTIgewogIEJsb2NrIGRhdGE7CiAgTm9kZTIgbmV4dDsKICBOb2RlMiBwcmV2OwogIHB1YmxpYyBOb2RlMihCbG9jayBkYXRhKSB7CiAgICB0aGlzLmRhdGE9ZGF0YTsKICAgIHRoaXMubmV4dD1udWxsOwogICAgdGhpcy5wcmV2PW51bGw7CiAgfQp9


Doppelt verkettete Liste Klasse für die Speicherverwaltung mit alternativen BestFit oder FirstFit Belegungsalgorithmus. Führe die Tests für alle drei Einfügestrategien durch (siehe oben).

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

Y2xhc3MgTGlzdDIgewogIE5vZGUyIGhlYWQ7CiAgY2hhciBhbGxvY2FNZXRob2Q7CiAgY2hhciBpbnNlcnRNZXRob2Q7CiAgcHVibGljIExpc3QyKGNoYXIgYWxsb2NhTWV0aG9kLGNoYXIgaW5zZXJ0TWV0aG9kKSB7CiAgICAvLyBhbGxvY2FNZXRob2QgPSAnQicgfCAnRicgQmVzdEZpdCAvIEZpcnN0Rml0CiAgICAvLyBpbnNlcnRNZXRob2RlID0gJ0gnIHwgJ1QnIHwgJ1MnCiAgICB0aGlzLmFsbG9jYU1ldGhvZD1hbGxvY2FNZXRob2Q7CiAgICB0aGlzLmluc2VydE1ldGhvZD1pbnNlcnRNZXRob2Q7CiAgICB0aGlzLmhlYWQ9bnVsbDsKICB9CiAgcHVibGljIHZvaWQgcmVtb3ZlKE5vZGUxIG5vZGUpIHsKICAgIE5vZGUyIG5leHQ9dGhpcy5oZWFkOwogICAgd2hpbGUgKG5leHQgJiYgbmV4dC5kYXRhLnN0YXJ0IT1ub2RlLmRhdGEuc3RhcnQpIHsKICAgICAgbmV4dCA9IG5leHQubmV4dDsKICAgIH0KICAgIGlmICghbmV4dCkgdGhyb3cgIkVJTlZBTElEIjsKCiAgICBpZiAodGhpcy5oZWFkLmRhdGEuc3RhcnQ9PW5leHQuZGF0YS5zdGFydCkgdGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0OwogICAgZWxzZSBuZXh0LnByZXYubmV4dD1uZXh0Lm5leHQ7CiAgfQogIHB1YmxpYyB2b2lkIGluc2VydChOb2RlMiBub2RlKSB7CiAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0TWV0aG9kKSB7CiAgICAgIGNhc2UgJ0gnOiB0aGlzLmluc2VydEhlYWQobm9kZSk7IHJldHVybjsKICAgICAgY2FzZSAnVCc6IHRoaXMuaW5zZXJ0VGFpbChub2RlKTsgcmV0dXJuOwogICAgICBjYXNlICdTJzogdGhpcy5pbnNlcnRTb3J0ZWQobm9kZSk7IHJldHVybjsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0SGVhZChOb2RlMiBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBub2RlLm5leHQ9dGhpcy5oZWFkOwogICAgICB0aGlzLmhlYWQ9bm9kZTsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgaW5zZXJ0VGFpbChOb2RlMiBub2RlKSB7CiAgICBpZiAodGhpcy5oZWFkPT1udWxsKSB0aGlzLmhlYWQ9bm9kZTsKICAgIGVsc2UgewogICAgICBOb2RlMiBuZXh0PXRoaXMuaGVhZDsKICAgICAgd2hpbGUgKG5leHQubmV4dCkgewogICAgICAgIG5leHQ9bmV4dC5uZXh0OwogICAgICB9CiAgICAgIG5leHQubmV4dD1ub2RlOwogICAgfQogIH0KICBwdWJsaWMgdm9pZCBpbnNlcnRTb3J0ZWQoTm9kZTIgbm9kZSkgewogICAgaWYgKHRoaXMuaGVhZD09bnVsbCkgdGhpcy5oZWFkPW5vZGU7CiAgICBlbHNlIHsKICAgICAgTm9kZTIgbmV4dD10aGlzLmhlYWQ7CiAgICAgIHdoaWxlIChuZXh0ICYmIG5leHQubmV4dCAmJiBuZXh0Lm5leHQuZGF0YS5zdGFydDxub2RlLmRhdGEuc3RhcnQpIHsKICAgICAgICBuZXh0PW5leHQubmV4dDsKICAgICAgfQogICAgICBuZXh0LnByZXYubmV4dD1ub2RlOwogICAgICBub2RlLm5leHQ9bmV4dDsKICAgIH0KICB9CiAgcHVibGljIEJsb2NrIGFsbG9jYXRlKGludCBzaXplKSB7CiAgICBOb2RlMSBuZXh0LGJlc3QsYWRkcjsKICAgIHN3aXRjaCAodGhpcy5hbGxvY2FNZXRob2QpIHsKICAgICAgY2FzZSAnRic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgd2hpbGUobmV4dCAmJiAobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghbmV4dCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gbmV4dC5kYXRhLnN0YXJ0OwogICAgICAgIG5leHQuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAobmV4dC5kYXRhLnN0YXJ0PT1uZXh0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUobmV4dCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnQic6CiAgICAgICAgbmV4dD10aGlzLmhlYWQ7CiAgICAgICAgYmVzdD1udWxsOwogICAgICAgIHdoaWxlKG5leHQpIHsKICAgICAgICAgIGlmICgobmV4dC5kYXRhLmVuZC1uZXh0LmRhdGEuc3RhcnQrMSk8c2l6ZSkgewogICAgICAgICAgICBpZiAoIWJlc3QpIGJlc3Q9bmV4dDsKICAgICAgICAgICAgZWxzZSBpZiAoKG5leHQuZGF0YS5lbmQtbmV4dC5kYXRhLnN0YXJ0KzEpPChiZXN0LmRhdGEuZW5kLWJlc3QuZGF0YS5zdGFydCsxKSkgYmVzdD1uZXh0OwogICAgICAgICAgfQogICAgICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICghYmVzdCkgdGhyb3cgIk9VVE9GTUVNIjsKICAgICAgICBhZGRyID0gYmVzdC5kYXRhLnN0YXJ0OwogICAgICAgIGJlc3QuZGF0YS5zdGFydCs9c2l6ZTsKICAgICAgICBpZiAoYmVzdC5kYXRhLnN0YXJ0PT1iZXN0LmRhdGEuZW5kKSB7CiAgICAgICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgdGhpcy5yZW1vdmUoYmVzdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgQmxvY2soYWRkcixhZGRyK3NpemUtMSwxKTsKICAgICAgICBicmVhazsKICAgIH0KICB9CiAgcHVibGljIHZvaWQgcmVsZWFzZShCbG9jayBibG9jaykgewogICAgYmxvY2suZmxhZz0wOwogICAgdGhpcy5pbnNlcnQobmV3IE5vZGUyKGJsb2NrKSk7CiAgfQogIHB1YmxpYyB2b2lkIHByaW50KCkgewogICAgTm9kZTIgbmV4dD10aGlzLmhlYWQ7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj09PT09PT09IE1FTU9SWSA9PT09PT09PT09Iik7CiAgICB3aGlsZSAobmV4dCkgewogICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV4dC5kYXRhLnN0YXJ0KyIgICIrbmV4dC5kYXRhLmVuZCsiICAiK25leHQuZGF0YS5mbGFnKTsKICAgICAgbmV4dD1uZXh0Lm5leHQ7CiAgICB9CiAgfQp9


Main Test.

 ▸ 
 ℂ 
 ℙ 
[]
 ✗ 
 ≡ 

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?



Created by the NoteBook Compiler Ver. 1.32.5 (c) Dr. Stefan Bosse (Tue Dec 17 2024 15:14:48 GMT+0100 (Central European Standard Time))