Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Relevanta dokument
Träd Hierarkiska strukturer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

Datastrukturer och algoritmer

Datastrukturer. föreläsning 3. Stacks 1

Länkade strukturer. (del 2)

Trädstrukturer och grafer

Datastrukturer och algoritmer

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

Föreläsning 9 Innehåll

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Föreläsning Datastrukturer (DAT036)

Föreläsning 3 Datastrukturer (DAT037)

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

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Tentamen i Algoritmer & Datastrukturer i Java

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

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

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

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

EN SNABBIS OM DoA. Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet. Pedher Johansson 7 januari 2008

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

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Föreläsning Datastrukturer (DAT036)

Föreläsning 4 Innehåll

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

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Tentamen, Algoritmer och datastrukturer

Föreläsning 7. Träd och binära sökträd

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

Arrayer. results

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 3 Datastrukturer (DAT037)

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

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

13 Prioritetsköer, heapar

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Föreläsning 9 Innehåll

Programkonstruktion och. Datastrukturer

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

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

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 2 Datastrukturer (DAT037)

Seminarium 13 Innehåll

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer och algoritmer

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

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

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

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

Algoritmer och datastrukturer 2012, fo rela sning 8

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDIU01 / 725G

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Föreläsning 13. Träd

Länkade strukturer, parametriserade typer och undantag

Lösningar Datastrukturer TDA

TDDC Terminologi Uppdaterad Fö #1

Föreläsning 12. Länkade listor

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Algoritmer och datastrukturer 2012, föreläsning 6

Tentamen kl Uppgift 4. Uppgift 5

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Föreläsning 3-4 Innehåll

Föreläsning 5. 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

Datastrukturer i Haskell

Samlingar Collection classes

Föreläsning 7. Träd och binära sökträd

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning Datastrukturer (DAT036)

Vad har vi pratat om i kursen?

Föreläsning 14 Innehåll

Föreläsning Datastrukturer (DAT036)

DAI2 (TIDAL) + I2 (TKIEK)

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Tentamen Datastrukturer D DAT 035/INN960

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 10 Datastrukturer (DAT037)

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

F4: Mer om OU1, OU2, listor och träd. Carl Nettelblad

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Transkript:

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. height[4] vilket refererar 5:e elementet i vektorn height. 2 Deklarera en vektor Vektorer är objekt i Java. För att skapa en vektor måste därför en vektorreferens deklareras. int[] v; Vektorreferenser kan också deklareras enligt: int v[]; Vektorreferensen kan inte ange längden av vektorn. 3 1

Allokera en vektor Vektorer allokeras liksom andra objekt med new int[] v = new int[10]; Värdet som anger vektorlängden behöver inte vara en konstant. Konstanter är bra att använda för att beteckna vektorlängder. static final int LIMIT = 10;... int[] v = new int[limit]; 4 Initiera en vektor Vektorer kan allokeras och initieras vid deklarationen av vektorreferensen som i C. int[] v = {65, 23, 91, 5, 10}; 5 Vektorer av objekt Vektorer av objektreferenser kan också deklareras. Circle[] circles = new Circle[10]; Observera att inga nya objekt ännu är deklarerade eller minnesallokerade. circles[4] = new Circle(3.3); Metoder och attribut kan refereras direkt på objektrefernsen. circles[4].getradius(); 6 2

Vektor som parameter Vektorer kan skickas som argument. Som argument kopieras inte vektorn utan vektorreferensen. Vektorelement går också utmärkt att skicka. Om vektorn är av primitivt data, kopieras värdet. Om vektorn är av objektreferenser, kopieras referensen. 7 Kommandoradsargument Till main-metoden skickas alltid eventuella kommandoradsargument som argument. Kommandoradsargument kan användas för att ange extra information till programmet. Varje argument angivet på kommandoraden blir ett element i String-vektorn i main-metoden. 8 Flerdimensionella vektorer Liksom i C kan vektorer i flera dimensioner skapas. Initieringen är lika enkel som endimensionella vektorer. int[][] = new int[3][9]; Circle[][][] = new Circle[3][3][3]; 9 3

Vector-klassen Används för att representera dynamiska vektorer. Kan växa efter behov. Använder referenser till objekt (Object). Indexeras från 0. Var försiktig med hur den används. 10 Vector-klassen java.util.vector public Vector() public Vector(int initiallength) public void addelement(object o) public void insertelementat(object o, int index) public void setelementat(object o, int index) public boolean contains(object o) public void removeelement(object o) public void removeelementat(int index) public Object elementat(int index) public void clear() public int size() 11 Vector-klassen Vector fruits = new Vector(); fruits.addelement("apple"); fruits.addelement("orange"); fruits.addelement("banana"); for (Enumeration e = fruits.elements(); e.hasmoreelements(); ) { System.out.println(e.nextElement(); } 12 4

Listor Elementen är ordnade. Element har värde. Listan har en början och ett slut. Kan vara tom. All element kan observeras. Element kan läggas in i listan på godtycklig plats. 13 Listor Vanligt gränssnitt Funktionalitet create insert isempty inspect first end previous next Beskrivning Skapa ny lista Lägger till element Kollar om listan är tom Inspekterar element Första elementet Sista elementet Föregående element Nästkommande element 14 Listor Element refereras oftast genom indexerade positioner (vektorbaserade och länkade listor) ''elementbehållare'' som i sig utgör positionen (endast länkade listor) 15 5

Vektorbaserade listor Fördelar: Att navigera och indexera listan går fort. Nackdelar: Maximalt antal element (eventuellt). Att lägga till och ta bort element kan vara dyrbart. Minnesåtgång beror på kapaciteten hos listan. 16 Länkade listor Fördelar: Lägga till och ta bort element är billigt. Minnesåtgång beroende på antal element. Nackdelar: Navigation dyrt (billigare med dubbellänkad). Mer komplex struktur. 17 Iteratorer Används för att navigera i en länkad lista Flera kan användas samtidigt 18 6

Stackar Element kan enbart läggas till och tas bort på en (och samma) position. Endast ett element kan inspekteras. LIFO strategi (Last In First Out) 19 Stackar Vanligt gränssnitt Funktionalitet create push pop top isempty Beskrivning Skapa ny stack Lägger till element Tar bort översta elementet Inspekterar översta elementet Kollar om stacken är tom 20 Köer Element läggs till i en ände och tas bort från den andra änden. Endast det främsta elementet kan inspekteras FIFO strategi (First In First Out) 21 7

Köer Vanligt gränssnitt Funktionalitet create enqueue dequeue front isempty Beskrivning Skapa ny kö Lägger till ett element sist Tar bort första elementet Inspekterar första elementet Kollar om kön är tom 22 Träd Ett tomt träd har inga noder Ett träd är tomt eller har exact en rot. Varje nod (utom roten) har exact en förälder. Varje nod har ett ändligt antal barn. Noder med samma förälder kallas syskon. Kopplingen mellan två noder kallas kant. Djupet för en nod är samma som antalet kanter mellan noden och roten. Ett delträd består samtliga ättlingar till en nod n. 23 Binära träd I ett binärt träd har varje nod som flest två barn. Traversera binära träd Rekursiva algoritmer Preorder Besök roten till aktuellt träd. Besök sedan vänstra delträdet och till sist det högra. Inorder Besök först det vänstra delträdet och sedan roten och till sist det högra delträdet. Postorder Besök först det vänstra delträdet och sedan det högra delträdet och till sist rooten. 24 8

Binärt sökträd (BST) Sökträd är konstruerade speciellt för sökning. Krav Det måste existera en linjär ordning av noderna. Definition Söknyckeln för nod n är större än alla söknycklar hos n's vänstra delträd. Söknyckeln för nod n är mindre än alla söknycklar hos n's högra delträd. 25 Binära sökträd Det kan finnas flera representationer av samma träd. En inorder traversering kommer att besöka noderna i en sorterad ordning. Algoritmernas hastighet för insättning, borttagande och sökning är högst beroende av utseendet på trädet. Balansera trädet. 26 Grafer Består av en uppsättning noder och kanter. Två noder som är kopplade med en kant kallas grannar. Grafer kan vara osammanhängande. Kanter kan vara riktade. 27 9

Sökning i grafer Två problem Att inte missa noder Att inte besöka en nod flera gånger. Strategi Börja med en godtycklig nod. Testa alla kanter från alla besökta noder. Kom ihåg vilka noder som är besökta. 28 Sökning i grafer Bredden först Testa alla kanter från den aktuella noden, innan du testar en annan nod. Djupet först Fortsätt så långt du kan från den aktuella noden innan du testar dess andra kanter. 29 10