Länkade strukturer. (del 2)

Relevanta dokument
Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Datastrukturer. föreläsning 3. Stacks 1

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 3. Stack

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Stackar, köer, iteratorer och paket

Samlingar Collection classes

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Föreläsning 3. Stack

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning 11. ADT:er och datastrukturer

Föreläsning 12. Länkade listor

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning 10. ADT:er och datastrukturer

Föreläsning Datastrukturer (DAT036)

DAT043 - föreläsning 8

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Objektorienterad Programmering (TDDC77)

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Repetition av OOP- och Javabegrepp

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Repetition av OOP- och Javabegrepp

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Föreläsning 14 Innehåll

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

Lösningsförslag till exempeltenta 2

Samlingar Collection classes

Föreläsning 2 Innehåll

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Interfacen Set och Map, hashtabeller

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 10 Innehåll

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 3 Datastrukturer (DAT037)

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Uno Holmer, Chalmers, :28 Uno Holmer, Chalmers, :28

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Collection classes. Interface, första exempel. Interface (forts) Men först

Föreläsning 3-4 Innehåll

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Föreläsning 8: Exempel och problemlösning

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Diskutera. Hashfunktion

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 11 Innehåll

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Collection Classes. bjectorienterad programmering Sida 1

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Generisk klass med typparameter Inre klass - ListIterator

Arrayer. results

Laboration A Objektsamlingar

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

OOP Objekt-orienterad programmering

Länkade strukturer, parametriserade typer och undantag

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Programmering fortsättningskurs

Trädstrukturer och grafer

So far... For recursive and iterative programs. Bubble, insertion, selection, quick, merge, counting

BST implementering, huvudstruktur

Kurskod D0010E Datum Skrivtid 5tim

Objektorienterad Programkonstruktion

Länkade listor, stackar och köer

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Datastrukturer och algoritmer

Inlämningsuppgift och handledning

TDDC77 Objektorienterad Programmering

Sammansatta datatyper Generics: Parametrisk polymorfism

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 2 Innehåll

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Transkript:

Länkade strukturer (del 2)

Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2

Abstraktion Procedurell abstraktion Skilja på vad som ska utföras och hur detta utförs Dataabstraktion Skilja på data och hur dessa organiseras och lagras Information hiding Dölja information om hur klasser och objekt är implementerade Programmering tillämpningar och datastrukturer 3

Abstrakta datatyper (ADT) Vill kunna återanvända kod Modulär kod Data + metoder som opererar på data Allt som behövs finns samlat på samma ställe Klasser med privata variabler private var Speciella metoder för att komma åt data public get() Programmering tillämpningar och datastrukturer 4

Abstrakta datatyper Ex. ArrayList (paketet java.util.*) Kapslas in i en klass Tillsammans med metoder för Allokering av önskat utrymme Automatisk utökning vid behov Insättning av element Sortering Etc. Programmering tillämpningar och datastrukturer 5

behöver tjänst utför tjänst ADT client server ArrayList klasslista = new ArrayList(); iter = klasslista.iterator(); Element femte = iter.get(5); class ArrayList { private int element; public class { private int pos; } public iterator() { return new (); } Programmering tillämpningar och datastrukturer 6

Vill bygga egen ADT classmylist{ private int element; «interface» LinkedList class My implements { private int pos; } public My iterator() { return new My(); } «interface» Programmering tillämpningar och datastrukturer 7

MyList implementeras utan insyn Vill inte behöva veta om framåt-länken heter nästa, next eller kompis Klassen MyList. fungerar som in port Ska erbjuda Sätt att komma ihåg nuvarande position Sätt att ta fram nästa/förra element Programmering tillämpningar och datastrukturer 8

MyList mylist = new MyList(); // initiera listan MyList.My iter = mylist.iterator(); // få en iterator iter.hasnext(); // slutet av listan? iter ett objekt som anroparen förvaltar själv Kommer ihåg sin position i listan Jfr bokmärken på webben Erbjuder ett antal användbara metoder Ex. finns det något nästa element? Ex. flytta fram ett steg Programmering tillämpningar och datastrukturer 9

Interfacet List Metoder: Object next(), Object previous() Ge nästa/förra element boolean hasnext(), boolean hasprevious() Finns fler element bakåt eller framåt? Programmering tillämpningar och datastrukturer 10

List interface add(object node) Lägg till detta element före den position som man står på just nu remove() Ta bort det element som returnerades sist med next() eller previous() OBS! Krav på att varje anrop på remove() föregås av anrop på next() eller previous() Annars ska runtime error genereras Programmering tillämpningar och datastrukturer 11

Få en iterator (exempel) public class Test { public void add(object obj) { LinkedList mylist = new LinkedList(); MyList.List iter = mylist.iterator(); iter.add(new Integer(3)); } } Programmering tillämpningar och datastrukturer 12

Hur implementeras iteratorn? Note that the remove() and set(object) methods are not defined in terms of the cursor position; they are defined to operate on the last element returned by a call to next or previous() Dvs. håll reda på vad iteratorn returnerade sist från next() eller previous() Programmering tillämpningar och datastrukturer 13

Hur implementeras iteratorn? -första -sista -storlek lista1 MinLista lista1 = new MinLista(); lista1.add( ); Min iter = lista1.iterator(); Anna Bertil John Kalle Pelle 0 1 2 3 4 -nuvpos -sistret iter Programmering tillämpningar och datastrukturer 14

Hur implementeras iteratorn? MittEl nästael = iter.next(); if (nästael.udda()) { iter.remove(); } Programmering tillämpningar och datastrukturer 15

Hur implementeras iteratorn? public void remove() { if (sistret!= null) { if ( ) { // början av listan första = första.nästa; } Programmering tillämpningar och datastrukturer 16

Hur implementeras iteratorn? public void remove() { sistret.nästa.förra = null; Programmering tillämpningar och datastrukturer 17

Hur implementeras iteratorn? public void remove() { sistret.nästa = null; Programmering tillämpningar och datastrukturer 18

Hur implementeras iteratorn? public void remove() { sistret = null; Programmering tillämpningar och datastrukturer 19

Hur implementeras iteratorn? iter.remove(); FEL! Omedelbart nytt anrop: Programmering tillämpningar och datastrukturer 20

MinLista class MinLista extends { class MinNod { private MinNod nästa; private Object innehåll; } class My implements { private int pos; } public My iterator() { return new My(); } «interface» List «interface» Programmering tillämpningar och datastrukturer 21

Collections «interface» Collection «interface» List AbstractCollection «interface» Set AbstractList AbstractSet «interface» SortedSet ArrayList Vector AbstractSequentialList HashSet TreeSet Stack LinkedList LinkedHashSet Programmering tillämpningar och datastrukturer 22

Utgångna klasser Vector Använd ArrayList istället Stack är dock kvar HashTable Använd HashMap istället Programmering tillämpningar och datastrukturer 23

Collection Oordnad samling Elementen har inga bestämda positioner Meningslöst med metoder som getindex(object o); getnext(); I stället används: contains(); Programmering tillämpningar och datastrukturer 24

Protokoll för Collection contains(object) add(object) remove(object) size() clear() isempty() iterator() Programmering tillämpningar och datastrukturer 25

Set Subklass till Collection Kan inte innehålla duplikat Programmering tillämpningar och datastrukturer 26

Liknar fjädrande tallrikshållare på restauranger Trycker ner en tallrik på toppen Poppar upp en tallrik från toppen Dvs. last in, first out (LIFO) Programmering tillämpningar och datastrukturer 27

Ex. stack innehållande variabelnamn minafiler namn förra nästa comp Programmering tillämpningar och datastrukturer 28

Efter push( i ); i minafiler namn förra nästa comp Programmering tillämpningar och datastrukturer 29

Efter peek(); som returnerar i i minafiler namn förra nästa comp Programmering tillämpningar och datastrukturer 30

Efter pop(); som returnerar i minafiler namn förra nästa comp Programmering tillämpningar och datastrukturer 31

Implementera stackar Lämpligt att använda datastruktur vars storlek kan förändras ArrayList LinkedList MyList Inlägg och uttag sker alltid i ena änden (toppen av stacken) Ska egentligen inte kunna söka igenom stacken efter element Programmering tillämpningar och datastrukturer 32

Implementera stackar Delegera anropen push() och pop() till minlista.add() och minlista.remove(): class MinStack { MyList stacken = new MyList(); } public push(elem item) { stacken.add(item); } Programmering tillämpningar och datastrukturer 33

Protokoll för Stack push(element) Lägg på överst Element pop() Ge mig och ta bort översta Element peek() Titta utan att röra empty() // tömmer stacken search(element) Programmering tillämpningar och datastrukturer 34

Element tas bort i början Nya element sätt in i slutet Dvs. first in, first out (FIFO) Precis som köer i affären, etc. Kö till skrivare Programmering tillämpningar och datastrukturer 35

Programmering tillämpningar och datastrukturer 36

Implementera köer Länkad lista, där man håller reda på första och sista elementet Inläggning sist Borttagning första Programmering tillämpningar och datastrukturer 37

Implementera köer, alternativ Cirkulär ArrayList Borttagning genom att flytta markören för första pos Vid fysisk borttagning skulle man behöva flytta alla element ett steg för att fylla luckan Kön kommer att krypa längs arrayen med fler och fler tomma platser i början av arrrayen Programmering tillämpningar och datastrukturer 38

Implementera köer, alternativ Lösning: Låt stacken krypa runt, dvs. efter index n fortsätta med 0 sista = (sista + 1) % kapacitet; Måste hålla reda på kapacitet (förutom position för första och sista elementet) Generellt Begränsad kapacitet (storleken på arrayen) Programmering tillämpningar och datastrukturer 39

Protokoll för Javas Queue boolean offer(element e) // enqueue (insert) Lägg in e sist i kön Returnera false om kön är full E poll() // dequeue (remove) Ta bort första elementet E peek() Titta utan att röra getsize(), isempty() Programmering tillämpningar och datastrukturer 40