Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.

Lignende præsentationer


Præsentationer af emnet: "Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister."— Præsentationens transcript:

1 Begreber og Redskaber 9

2 Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister

3 Tabeller Person tabel[] = new Person[100]; tabel[0] = new person(”Mads Rosendahl”); …. osv Tabeller er gode hvis man har en rimelig viden om maksimalt antal elementer. Bedst hvis der tilføjes, men ikke fjernes elementer

4 Datastruktur Indsæt element Fjern element Søg efter elementer Datastruktur Indsæt Fjern Søg

5 Datastrukturer: lister Lister –Elementer i en rækkefølge –Indsæt først eller sidst –Gennemløb i rækkefølge –Eksempel: Stak: Sidst ind først ud Sæt ind og tag ud fra samme ende –Eksempel: Kø: Først ind først ud Sæt ind i den ene ende og tag ud fra den anden –Eksempel: Dequeue. Man kan sætte ind og tage ud fra begge ender.

6 Datastrukturer: Mængder Samling af elementer, typisk sorteret eller ordnet efter elementernes værdi (f.eks en nøgle) Eksempel: Hob – Rå samling Eksempel: Mængde – et element kan højst være der en gang Eksempel: Ordnet mængde Eksempel: Samling af personer sorteret efter cpr nummer

7 Datastrukturer: grafer Grafer: elementer kender/refererer til visse andre F.eks punkter/byer med afstande. Mere generelt: Databaser med elementer hvor der kan søges med forespørgsler

8 Lister Samling af objekter [109, 27, 67, 78, 15 ] [Karl Børge, Knud, Orla] Elementerne står i en rækkefølge

9 LinkedList og Link

10 Class Link og LinkedList class Link { Object data; Link next; } public class LinkedList{ private Link first; public LinkedList(){ first = null; } public void addFirst(Object obj){ Link newLink = new Link(); newLink.data = obj; newLink.next = first; first = newLink; }

11 Figure 4 Adding a Link to the Head of a Linked List Indsæt først i listen

12 Figure 5 Removing a Link from the Head of a Linked List Fjern første element i liste

13 Hent første, fjern første public Object getFirst(){ if (first == null) throw new NoSuchElementException(); return first.data; } public Object removeFirst(){ if (first == null) throw new NoSuchElementException(); Object obj = first.data; first = first.next; return obj; }

14 Iterator En ”Iterator” giver måde at gennemløbe en liste på interface ListIterator { Object next(); boolean hasNext(); void add(Object obj); void remove(); void set(Object obj); } F.eks. int i=0; ListIterator lit = lst.listIterator(); while(lit.hasNext()){ Object elm = lit.next(); i++; System.out.println(i+": "+elm); }

15 Figure 2 A List Iterator Iterator

16 LinkedListIterator class LinkedListIterator implements ListIterator{ LinkedList list; Link position; Link previous; public LinkedListIterator(LinkedList list){ this.list = list; position = null; previous = null; }

17 next, hasnext public Object next(){ if (!hasNext()) throw new NoSuchElementException(); previous = position; // remember for remove if (position == null) position = list.first; else position = position.next; return position.data; } public boolean hasNext(){ if (position == null) return list.first != null; else return position.next != null; }

18 Figure 7 Adding a Link to the Middle of a Linked List Indsæt element

19 public void add(Object obj){ if (position == null) { list.addFirst(obj); position = list.first; } else { Link newLink = new Link(); newLink.data = obj; newLink.next = position.next; position.next = newLink; position = newLink; } previous = null; }

20 Figure 6 Removing a Link from the Middle of a Linked List Fjern element

21 public void remove(){ if (position == list.first){ list.removeFirst(); position = list.first; } else { if (previous == null) throw new IllegalStateException(); previous.next = position.next; position = previous; } previous = null; }

22 Indre klasser Man kan have klasser inde i klasser. Et objekt af den indre klasse kender så til variable i objektet for den ydre klasse. public class LinkedList{ public ListIterator listIterator(){ return new LinkedListIterator(); } private class LinkedListIterator implements ListIterator {.. }


Download ppt "Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister."

Lignende præsentationer


Annoncer fra Google