Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
|
|
- Ida Abrahamsson
- för 6 år sedan
- Visningar:
Transkript
1 Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och kö med vektor eller enkellänkad lista. En lista är en följd av. Det finns en före-efter-relation mellan en. Begrepp som första et i listan, efterföljaren till visst ilistan ärmeningsfulla.detfinnsalltsåettpositionsbegrepp. Definitionen innebär inte att en är sorterade på något visst sätt t.ex. i storleksordning. :a et :a et :e et 4:e et Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Abstrakt datatypen lista Implementering av listor Abstrakt datatyp En abstrakt modell tillsammans med de operationer man kan utföra på den. Abstrakt modell: lista Operationer på modellen: Lägga in i listan (först, sist ) Ta bort ett ur listan Undersöka om ett visst finns i listan Ta reda på ett et i listan (första, sista ) Undersöka om listan tom En vektor kan användas för att hålla reda på listans. 0 Ett annat sätt är att utnyttja länkad datastruktur. I en länkad struktur består listan av noder som har en referens till efterföljaren (och ev. till föregångaren). Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4
2 Egen implementering av listor från grunden Vektor Egen implementering av listor från grunden Enkellänkad lista size a first null objekt som satts in i vektorn objekt som satts in i listan Datavetenskap (LTH) Föreläsning 4 VT 08 5 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 6 / 4 Enkellänkad lista Implementering public class SingleLinkedList<E> { private ListNode<E> first; // referens till första noden // null om listan är tom..metoder.. /* Statisk nästlad klass. Representerar en nod som innehåller ett av typ E. */ private static class ListNode<E> { private E ; // data som lagras private ListNode<E> ; // refererar till nästa nod private ListNode(E e) { = e; = null; Datavetenskap (LTH) Föreläsning 4 VT 08 7 / 4 Nästlade klasser i Java Klasser kan deklareras inuti andra klasser (nästlade klasser). Används oftast när den nästlade klassen bara är meningsfull för den omgivande klassen. Användare behöver oftast inte känna till existensen av den nästlade klassen. En nästlad klass kan deklareras private om den bara ska användas i den omgivande klassen. Även konstruktorn kan då vara private. I den omgivande klassen har man tillgång till allt i den nästlade klassen (även det som är private). Det finns två typer av nästlade klasser: statiska nästlade klasser inre klasser (eng: inner classes). Datavetenskap (LTH) Föreläsning 4 VT 08 8 / 4
3 Statiska nästlade klasser public class OuterClass { public void p() { NestedClass x = new NestedClass(); private static class NestedClass { private NestedClass() { En statisk nästlad klass kan bara komma åt statiska attribut och statiska metoder i den omgivande klassen. Datavetenskap (LTH) Föreläsning 4 VT 08 9 / 4 Att skapa objekt av nästlade klasser Inre klasser public class OuterClass { private int i; public void p() { InnerClass x = new InnerClass(); private class InnerClass { private InnerClass() { private void q() { int b = i; ; // Här används i från OuterClass! Ett objekt av en inre klass kan komma åt allt i det objekt av den omgivande klassen som skapade objektet av den inre klassen. Datavetenskap (LTH) Föreläsning 4 VT 08 0 / 4 Att skapa objekt av nästlade klasser Statiska nästlade klasser Om den nästlade klassen är statisk: Görs oftast bara i den omgivande klassen. Då blir det samma syntax som vanligt. Exempel finns på föregående bilder. Man kan skapa objekt av nästlade klasser även utanför den omgivande klassen. Kräver dock att den nästlade klassen och dess konstruktor är public. Detaljer på nästa bild. public class OuterClass { public static class NestedClass { public NestedClass() { så skapas en instans av den nästlade klassen med följande syntax: OuterClass.NestedClass x = new OuterClass.NestedClass(); Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 / 4
4 Att skapa objekt av nästlade klasser Inre klasser Om den nästlade klassen är en inre klass: public class OuterClass { public class InnerClass { public InnerClass() { så kan instanser av den inre klassen bara skapas genom ett objekt av den yttre klassen: OuterClass a = new OuterClass(); OuterClass.InnerClass b = a.new InnerClass(); Åter till implementeringen av listor På följande bilder visas implementeringar av några metoder i klassen SingeLinkedList. public class SingleLinkedList<E> { private ListNode<E> first; private static class ListNode<E> { private E ; // data som lagras private ListNode<E> ; // refererar till nästa nod Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4 Exempel på metoder i en enkellänkad lista Insättning och borttagning först i listan Länka in en ny nod innehållande et x först ilistan: public void addfirst(e x) { ListNode<E> n = new ListNode<E>(x); n. = first; first = n; Tag bort första noden i listan, returnera dess innehåll: public E removefirst() { if (first == null) { throw new NoSuchElementException(); ListNode<E> temp = first; first = first.; return temp.; Datavetenskap (LTH) Föreläsning 4 VT 08 5 / 4 Traversering av en i listan Exempel: metoden tostring Returnera en sträng som representerar listan: public String tostring() { StringBuilder sb = new StringBuilder(); sb.append( [ ); ListNode<E> p = first; while (p!= null) { sb.append(p..tostring()); if (p.!= null) { sb.append(", "); p = p.; sb.append( ] ); return sb.tostring(); Datavetenskap (LTH) Föreläsning 4 VT 08 6 / 4
5 Traversering av en i listan Mönster Diskutera ListNode<E> p = first; while (p!= null) { p = p.; Antag att vi ska skriva metoder addlast och removelast för att sätta in och ta bort sist listan. Hur ska vi lösa de problemen? Vilka specialfall finns? Datavetenskap (LTH) Föreläsning 4 VT 08 7 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 8 / 4 Exempel på metoder i en enkellänkad lista Insättning sist i listan Söka upp sista noden i listan Mönster Länka in en ny nod innehållande et x sist ilistan: public void addlast(e x) { ListNode<E> n = new ListNode<E>(x); if (first == null) { first = n; else { ListNode<E> p = first; while(p.!= null) { p = p.; p. = n; if (first == null) { else { ListNode<E> p = first; while (p.!= null) { p = p.; // Här refererar p till sista noden Datavetenskap (LTH) Föreläsning 4 VT 08 9 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 0 / 4
6 Exempel på metoder i en enkellänkad lista Borttagning sist i listan Diskutera public E removelast() { if (first == null) { // tom lista throw new NoSuchElementException(); if (first. == null) { // ett ListNode<E> temp = first; first = null; return temp.; ListNode<E> p = first; // minst två ListNode<E> pre = null; while (p.!= null) { pre = p; p = p.; pre. = null; return p.; Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Implementering med länkad struktur Kommentarer Exemplen visar att det är viktigt att tänka på specialfall. Vissa operationer blir krångliga i den enkellänkade implementeringen. Dessa kan förenklas om man i varje nod också har en referens till föregångaren. Detta kallas dubbellänkade listor. first Man kan förenkla implementeringar av vissa operationer ytterligare genom att ha ett speciellt ("huvud") i början av listan. Två av metoderna vi implementerat, add och removelast, är långsammare än motsvarande metoder för att sätta in och ta bort i början av listan. Både add och removelast innehåller en loop. Ge förslag på hur man kan implementera listklassen så att dessa loopar kan tas bort. Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Traversering av listor iteratorer Användare av en listklass behöver möjlighet att gå igenom en i listan. Låt därför SingleLinkedList implementera interfacet Iterable: public class SingleLinkedList<E> implements Iterable<E> { Lägg till metoden Iterator<E> iterator() i klassen SingleLinkedList. Metoden iterator ska skapa och returnera ett iterator-objekt. Skriv en (inre) klass som implementerar interfacet Iterator enligt mönstret: private class MyListIterator implements Iterator<E> { Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4
7 Interfacet Iterator metoder Iteratorklass Inre klassen MyListIterator /** Returns true if the iteration has more s. */ boolean hasnext(); /** Returns the in the iteration. */ E (); /** Removes from the underlying collection the returned by the iterator (optional). */ default void remove(); Metoder deklarerade default är redan implementerade. Default-metoden remove genererar UnsupportedOperationException. private class MyListIterator implements Iterator<E> { private ListNode<E> pos; private MyListIterator() {pos = first; public boolean hasnext() {return pos!= null; public E () { if (hasnext()) { ListNode<E> temp = pos; pos = pos.; return temp.; else { throw new NoSuchElementException(); Datavetenskap (LTH) Föreläsning 4 VT 08 5 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 6 / 4 Metoden iterator() Klassen SingleListIterator public class SingleLinkedList<E> implements Iterable<E> { private ListNode<E> first; public Iterator<E> iterator() { return new MyListIterator(); private class MyListIterator implements Iterator<E> { Användning av iterator Exempel Nu kan vi iterera genom vår lista: SingleLinkedList<String> list = new SingleLinkedList<String>(); // sätt in några String-objekt i listan Iterator<String> itr = list.iterator(); while (itr.hasnext()) { String s = itr.(); Eftersom vår klass SingleLinkedList implementerar interfacet Iterable kan vi också använda foreach -satsen: for (String s : list) { Datavetenskap (LTH) Föreläsning 4 VT 08 7 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 8 / 4
8 Listklasser i java.util Det finns två konkreta generiska klasser i Javas API för listhantering. Båda implementerar interfacet List. <<Interface>> Iterable Diskutera Nu när vi implementerat en egen listklass kan vi jämföra olika listimplementeringar: ArrayList implementeras med hjälp av en vektor: ArrayList<E>, som implementerats med vektor LinkedList<E>, som implementerats med en dubbel-länkad cirkulär struktur <<Interface>> Collection <<Interface>> List Inuti LinkedList används en cirkulär, dubbellänkad struktur: ArrayList LinkedList Fördelar, nackdelar? Datavetenskap (LTH) Föreläsning 4 VT 08 9 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 0 / 4 ArrayList vs LinkedList Implementera abstrakta datatyperna stack och FIFO-kö ArrayList De indexerade metoderna get(int idx) och set(int idx, E ) är effektiva i ArrayList. Däremot är insättningar och borttagningar (utom sist i listan) långsamma eftersom måste flyttas. LinkedList De indexerade metoderna är långsamma eftersom listan måste stegas igenom tills önskat nås. När man väl hittat rätt plats i listan är insättningar och borttagningar snabba. Nod-objekten kräver extra minne och hantering. Vi har tidigare sett ett exempel hur man kan skriva en stack-klass genom att internt använda LinkedList eller ArrayDeque. Fördelen är att det är enkelt och koden blir kort. Men det bli dubbla metodanrop. Om vi anropar push i vår stackklass, så anropas också push i LinkedList, En onödigt komplicerad datastruktur används. Exempel: Datastrukturen i LinkedList är vald så att operationerna på listan ska bli effektiva. Det ät onödigt med dubbellänkad lista för att implementera en stack. Istället kan man använda en vektor eller en enkellänkad lista för att implementera de abstrakta datatyperna stack och FIFO-kö. Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 / 4
9 Diskutera Implementering av stack Enkellänkad datastruktur Hur kan man använda en enkellänkad lista för att implementera en stack? Hur kan man använda en vektor lista för att implementera en stack? Enkellänkad datastruktur för stack: Stacken representeras av referens till första noden. Alla operationer kan då utföras på konstant tid, oberoende av stackens storlek. Behöver extra utrymme för -referenser. first Datavetenskap (LTH) Föreläsning 4 VT 08 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4 Enkellänkad implementering av stack Vektorimplementering av stack s = new MyStack<Integer>(); s.push(); s.push(); s.push(); int i = s.pop() // i får värdet first = null first first first first Vektorimplementering av stack: Stacken representeras av vektor och index för nästa insättning (initialt 0). Ger konstant tid för metoderna så länge vektorns storlek räcker. Om man dubblar vektorns storlek varje gång den inte räcker till, kan man visa att metoderna fortfarande i medeltal går att utföra på konstant tid. Efter dubblering är bara halva utrymmet i vektorn utnyttjat. Datavetenskap (LTH) Föreläsning 4 VT 08 5 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 6 / 4
10 Vektorimplementering av stack Implementering av kö Enkellänkad datastruktur s = new MyStack<Integer>(); size = 0 s.push(); s.push(); s.push() size = size = Enkellänkad datastruktur för FIFO-kö: Kön representeras av referenser till första och sista noden. Alla operationer kan då utföras på konstant tid, oberoende av köns längd. Behöver extra utrymme för -referenser. int i = s.pop() // i får värdet size = first s.push(4); 4 size = Datavetenskap (LTH) Föreläsning 4 VT 08 7 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 8 / 4 Enkellänkad implementering av kö Vektorimplementering av kö q = new MyQueue<Integer>(); first = = null q.offer(); q.offer(); q.offer(); first first first Vektorimplementering av kö: Vektorn används cirkulärt; första platsen i vektorn anses vara efterföljare till sista platsen. Kön representeras av vektorn samt index för första (äldsta) et front index för sista (yngsta) et rear antalet size Även här kan vi behöva skapa större vektor när antalet blivit för stort. int i = q.poll() // i får värdet first Datavetenskap (LTH) Föreläsning 4 VT 08 9 / 4 Datavetenskap (LTH) Föreläsning 4 VT / 4
11 Vektorimplementering av kö Exempel på vad du ska kunna q = new MyQueue<Integer>(); q.offer(); q.offer(); q.offer(); q.offer(4); q.offer(5); int i = q.poll() // i får värdet q.offer(6); front = 0, rear = -, size = 0 front = 0, rear = 0, size = 4 5 front = 0, rear = 4, size = front =, rear = 4, size = front =, rear = 0, size = 5 Implementera en lista effektivt med hjälp av vektor respektive länkade struktur. Förklara vad nästlade och inre klasser är för något samt kunna implementera sådana. Med hjälp av dokumentation använda klasser och interface från Java Collections Framework: List, Queue, Deque, ArrayList, LinkedList, ArrayDeque, Iterator, ListIterator och Iterable Implementera en lista, stack eller kö effektivt med hjälp av vektor respektive länkade struktur. Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4 Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4 Datorlaboration Enkellänkad lista Implementera egna generisk klasser som beskriver en FIFO-kö. I en klass ska du delegera till klassen LinkedList. I den andra klassen ska du använda en cirkulär, enkellänkad lista för att hålla reda på en i kön. Utifrån sett ser kön ut så här: Inuti klassen är den uppbyggd så här: size Tips! Rita för att förstå vad som händer i programmet! Innehåll: kö, enkellänkad lista, iterator, testning med JUnit. Datavetenskap (LTH) Föreläsning 4 VT 08 4 / 4
Föreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
Läs merADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition
Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue
Läs merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Listor, stackar, köer Abstrakta datatypen lista listklasser i Java, egen implementering Datastrukturen enkellänkad lista Jämföra element metoden equals, interfacet Comparable Abstrakta
Läs merFöreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Läs merFöreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Läs merAbstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar
Läs merDatastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
Läs merFöreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista
Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och
Läs merFöreläsning 2 Innehåll
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Läs merSeminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 2 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Generik används för att få typsäkra datastrukturer Java Collections Framework Standardbibliotek med datastrukturer i
Läs merSeminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats
Läs merJava Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Läs merStackar, köer, iteratorer och paket
Stackar, köer, iteratorer och paket Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Paket Stackar och köer Array resp länkad struktur Iteratorer Javadoc Kommentarer lab 1 Bra att de flesta
Läs merF12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
Läs merFöreläsning 14 Innehåll
Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade
Läs merLänkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
Läs merFöreläsning 2 Innehåll. Generiska klasser. Generik i Java. Varför generiska klasser Bakgrund
Föreläsning 2 Innehåll Generiska klasser Javas samlingsklasser är generiska. Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element metoden equals En generisk
Läs merTDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista
Läs merListor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9
Listor Koffman & Wolfgang kapitel 2, avsnitt 2.1 2.3, 2.5 2.6 och 2.9 Figur 2.1, sid 63 java.util.list, med dess implementeringar 2 List och primitiva typer En array kan innehålla primitiva typer: int[],
Läs merTDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack
Läs merFöreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel
Föreläsning 3 Innehåll Generiska klasser Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Man kan deklarera en eller flera typparametrar när man definierar
Läs merDatastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer
Arrayer Samling av data Datastrukturer int[] minatelnummer = new int[30]; // allokering av tillräckligt // stort minnesutrymme Element refereras genom indexering ringa = minatelnummer[25]; // indexering
Läs merFöreläsning 3 Datastrukturer (DAT037)
Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 6 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 1
Läs merFöreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet
Läs merFöreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Kort om javadoc Abstrakta datatyper Ordböcker/Mappar Listor Stackar
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-10-30 Repetition Analys av tidskomplexitet. Kostnadsmodeller. Asymptotisk komplexitet/notation. Dynamiska arrayer. Amorterad tidskomplexitet
Läs merFöreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Läs merLänkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
Läs merFö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
Föreläsning 4 Kö 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 ADT Kö Grundprinciper: En kö fungerar som en kö. Man
Läs merTommy Färnqvist, IDA, Linköpings universitet
Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings
Läs merFöreläsning 2 Innehåll
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Läs merHitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet
Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig
Läs merJava Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Läs merFöreläsning 9 Innehåll
Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften
Läs merFöreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
Läs merDatastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd
Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:
Läs merFöreläsning 3 Datastrukturer (DAT037)
Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-07 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Läs merObjektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Läs merFöreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack
Läs merTentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt
Läs merADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack
Stack och Kö -Implementering - Tilllämpningar ADS : STACK Det finns ett par vanligt förekommande ADT:er för samlingar av element som egentligen är specialfall av listor. En av dem är Stack Definition:
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merFöreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
Läs merFöreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Läs merDAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Läs merInlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen
Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper
Läs merÖvning vecka 6. public void method2() { //code block C method3(); //code block D }//method2
Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)
Läs merpublic static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }
Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)
Läs merFöreläsning 13 Innehåll
Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen
Läs merInterface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Läs merDet finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Läs merEDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
Läs merSaker du ska kunna Föreläsning 13 & 14
Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering
Läs merDAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Läs merLösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs 2013 12 19 1. a) En samling element där insättning och borttagning
Läs merADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar
Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp
Läs merFöreläsning 1. Abstrakta datatyper, listor och effektivitet
Föreläsning 1 Abstrakta datatyper, listor och effektivitet Föreläsning 1 Datastrukturer Abstrakta DataTyper ADT Lista Lista och Java Collections Framework (ArrayList) Lista implementerad med en array Analys
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Läs merAbstrakta datatyper. Primitiva vektorer. Deklarera en vektor
Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-05 Repetition Förra gången: Listor, stackar, köer. Länkade listor, pekarjonglering. Idag: Cirkulära arrayer. Dynamiska arrayer. Amorterad
Läs merOOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Läs merSamlingar Collection classes
Samlingar Collection classes Sven-Olof Nyström Uppsala Universitet 17 mars 2005 Skansholm: Kapitel 9, 19 Se även Suns tutorial om Collections Olika slag av samlingar i Java Arrayer (Till exempel: int[])
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Läs merProgrammering för språkteknologer II, HT2014. Rum
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ 1 Idag - Parametriserade
Läs merTentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng
Läs merRepetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Läs mer2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.
LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet offentliggörs senast: 2011-04-02. Tillåtna
Läs merDiskutera. Hashfunktion
Föreläsning 1 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Tidigare har
Läs merRepetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Läs merADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar
Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap
Läs merSammansatta datatyper Generics: Parametrisk polymorfism
jonas.kvarnstrom@liu.se 2017 Sammansatta datatyper Generics: Parametrisk polymorfism Listor och arrayer 2 Enligt TDDD73: Många språk har både listor och arrayer även Java och Python! Exakta definitioner
Läs merSo far... For recursive and iterative programs. Bubble, insertion, selection, quick, merge, counting
So far... Complexity analysis For recursive and iterative programs Sorting algorithms Bubble, insertion, selection, quick, merge, counting Binary search, dynamic arrays Rest of course: lots of data structures!
Läs merLösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning
Läs merFöreläsning 3 Innehåll
Föreläsning 3 Innehåll Jämföra element interfacen Comparable och och Comparator Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Datavetenskap (LTH) Föreläsning
Läs merDiskutera Sortera objekt
Föreläsning 3 Innehåll Diskutera Sortera objekt Metoden sort är en statisk metod i klassen Arrays. Den sorterar vektorn som skickas med som argument. Jämföra element interfacen Comparable och och Comparator
Läs merTentamen, EDA501 Programmering M L TM W K V
LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 04 13, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merGenerisk klass med typparameter Inre klass - ListIterator
Objektorienterad programmeringsmetodik Generics, clone Generics Återanvändning Ännu ett sätt att lösa ett gammalt problem: skriva så lite kod som möjligt Vi vill ha metoder som fungerar på olika klasser
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merFöreläsning 10 Innehåll
Föreläsning 10 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Undervisningsmoment:
Läs merDagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Läs merFöreläsning 11 Innehåll
Föreläsning 11 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Datavetenskap (LTH)
Läs merTentamen, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2014 03 10, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Läs merTentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
Läs merFöreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista Evaluate postfix expressions Läsanvisningar
Läs merLösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-01-10 1. Båda looparna upprepas n gånger. s.pop() tar O(1), eventuellt amorterat. t.add() tar O(log i) för i:te iterationen av första loopen.
Läs merEtt problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Läs merInlämningsuppgift och handledning
Inlämningsuppgift och handledning Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder på fredagluncher
Läs merLaboration A Objektsamlingar
Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se
Läs merFöreläsning 10 Innehåll
Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Läs merObjektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016
Objektorienterad Programkonstruktion Föreläsning 9 30 nov 2016 Collections Ett samlingsnamn på objekt som innehåller en samling av andra objekt Det finns många olika sorters Collections, t.ex listor, träd,
Läs merFöreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och
Läs merFöreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Läs merFöreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Läs merFöreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram
Läs merTentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
Läs mer