Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
Algoritmer och data strukturer -Länkade listor
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Fortsättningskurs i Programmering lektion 6
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Binära Sökträd, kapitel 19
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
C-programmering ID120V William Sandqvist Länkad lista
Programmeringsteknik för K och Media
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Exception Handling Kapitel 9. Agenda Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 11 Arrayer.
Programmering i C# 3. Klasser.
PROCESSPROGRAMMERING
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Datasamlingar och generiska enheter
4. Arv och dynamisk bindning
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
Graph och graph-algoritmer. Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar:
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
7. Delegerare och notifierare
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sökning, Symbol tabeller Binära sökträd.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Länkade listor á la C/C++
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

Köer -- Kapitel 16

Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta data från kön (sist)

Principen med en kö enqueue( ’A’ ) enqueue( ’B’ ) enqueue( ’C’ ) enqueue( ’D’ ) dequeue( ) enqueue( ’E’ ) Kö ABCDE

Användningsområden Printer köer Asynkrona gränssnitt  Kommunikation mellan olika processer på samma operativ system Data buffring

Implementeringar Statisk implementation  Arraybaserad Dynamiska implementation  Länkade listor

Med en array... ”Wraparound”  Slipper flytta data  Kräver start och slut index  Snabbt Statisk maxstorlek  Dubblering möjlig men kostsam

Exempel public class Queue { private... public Queue() { } public void enqueue(Object data) { } public Object dequeue() { } }

Tillstånd / Konstruktorn private Object [] array; private int back, front; private int size; public Queue() { array = new Object[50]; back = -1; front = 0; size =0; }

Metoden -- ’void enqueue(Object data)’ public void enqueue(Object data) { if(size < array.length) { back = (back + 1) array[back] = data; size++; } }

public void enqueue(Object data) { if(size == array.length) doubleQueue(); back = increment(back); array[back] = data; size++; } med Wraparound

Metoden -- ’int increment(int x)’ private int increment(int x) { if(++x == array.length) x=0; return x; } med Wraparound

Metoden -- ’Object dequeue()’ public Object dequeue() { Object value = null; if(size > 0) { value = array[front]; front = front + 1; size--; } return value; }

public Object dequeue() { Object value = null; if(size > 0) { value = array[front]; front = increment(front); size--; } return value; } Med wraparound

Med en länkad lista... Arbetar bara mot ändarna på listan  Lägger in först i listan  Tar ut sist ur listan Långsam  Minnesallokering Behöver ingen ”wrapping”  Enklare implementation

Exempel public class Queue { private... public Queue() { } public void enqueue(Object data) { } public Object dequeue() { } }

Tillstånd / Konstruktorn private LinkedList list; public Queue() { list = new LinkedList(); }

Metoden -- ’void enqueue(Object data)’ public void enqueue(Object data) { list.addFirst(data); }

Metoden -- ’Object dequeue()’ public Object dequeue() { return list.getLast(); }

Bättre lösning,som länkad lista private ListNode front; private ListNode back; public Queue() { front=back=null; }

Metoden -- ’void enqueue(Object data)’ public void enqueue(Object data) { if (isEmpty()) back=front=new ListNode(data); else back=back.next=new ListNode(data); }

Metoden -- ’Object dequeue()’ public Object dequeue() { if(isEmpty()) throw new UnderflowException(”Tom kö”); Object value=front.element; front=front.next; return value; }

Implementationsjämförelse Statisk implementation  (Kan ha) mycket outnyttjat minne  Snabb Dynamisk implementation  Minimalt outnyttjat minne  Långsam Konstant tid