2004-12-09ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.

Slides:



Advertisements
Liknande presentationer
Snabbguide och tips.
Advertisements

Formulär Tänkte nu gå igenom vad ett formulär är och hur man kan skapa dem i Access.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Algoritmer och data strukturer -Länkade listor
Sökning och sortering Linda Mannila
Logikprogrammering Ons, 25/9
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© 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 2 Datastrukturer Abstrakta datastrukturer Stack
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
C-programmering ID120V William Sandqvist Länkad lista
Programmeringsteknik K och Media
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
DAV B04 - Databasteknik Indexering (kap 14).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
i olika programmeringsspråk
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 11 Arrayer.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Pathfinding. –Vad är det? –Sökning från A till B.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Programmeringsteknik för Media1 & K1
William Sandqvist C:s minnesmodell.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
1.Välj en nod vilken som helst och markera den som öppen. Låt den bli rot. A R B F C D E G
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
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.
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
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
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Länkade listor Binära träd
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
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.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
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 )
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
Iteratorer och generiska algoritmer sid. 1 6/28/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Iterator vector ::iterator b = ivec.begin() vector ivec vector.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear

ITM2 Innehåll Fält Pekare Listor Träd Stack Kö Egentillverkade datatyper

ITM3 Fält (Array) Endimensionellt fält –Läs av temperaturen var tredje timme under 1 dygn float avl[8]; avl[0] = 11.3; avl[1] = 13.6; avl[5] = -2.3;

ITM4 Tvådimensionellt fält Läs av temperaturen var tredje timme under en vecka float avl[8][7]; // avl[Tid,Dag] avl[2][3] = 13.0; avl[5][6] = -1.7;

ITM5 Listor Kontinuerlig lista (i minnet) –Ett fält är en kontinuerlig lista –Fördel: enkel konstruktion –Nackdelar: storleken sätts vid deklarationen kan ta upp onödigt mycket utrymme krånglig att hantera t.ex. vid sortering & sökning krånglig att utöka

ITM6 Pekare En pekare innehåller adressen till en minnescell där data är lagrad

ITM7 Länkad lista Varje element har en pekare till nästa i listan –Fördelar: enkelt att lägga till och radera data enkelt att sortera data –Nackdel: något krångligare teknik

ITM8 Länkad lista II Radera ett element –Ändra pekaren för elementet innan –Lämna tillbaka minnesallokeringer för den borttagna elementet

ITM9 Länkad lista III Lägga till ett element –Ändra pekaren för elementet innan –Låt det nya elementet peka på nästa i listan

ITM10 Länkad lista IV Pseudokod för en procedur som skriver ut en länkad lista: procedure PrintList(List) Assign curPointer the value headPointer while curPointer inte är NIL do ( Skriv namnet i posten som curPointer pekar på; Assign curPointer the value adressen i aktuell post )

ITM11 Stack En stack är ett exempel på där man kan använda en kontinuerlig lista LIFO = Last In First Out –Tillägg och radering görs i toppen –Push = tillägg –Pop = radering

ITM12 Stack II Minne reserveras för en kontinuerlig lista (gulmarkerat) Stacken kan bli full StackPointer (SP) innehåller adressen till den senast inlagda posten StackPointer flyttas när data ”poppas” och ”pushas”

ITM13 Kö FIFO = First In First Out –Tillägg görs vid svansen (bak) –Radering görs vid huvudet (fram) –HeadPointer (HP) pekar till början av kön –TailPointer (TP) pekar till slutet av kön –Om kön är tom pekar både HP och TP på samma element

ITM14 Kö II I en kontinuerlig lista utnyttjas utrymmet dåligt. Den del som innehåller data flyttar sig inom det reserverade utrymmet Förbättring: –Cirkulär lista –Länkad lista

ITM15 Träd Nod = varje position i trädet Rotnod = noden i ”toppen” av trädet Löv = avslutande nod ”längst ner” i trädet Subträd = delträd Barn = noder närmast under en nod Föräldrar= nod närmast över en nod Syskon = noder med samma föräldrar Djup = största antalet noder från rot till löv

ITM16 Träd i en länkad lista Ett binärträd implementerad med en länkad lista

ITM17 Träd utan pekare

ITM18 Obalanserat träd utan pekare

ITM19 Manipulera datastrukturer Datastrukturer som ett abstrakt verktyg Skapa funktioner som: –Lägger till en post –Ta bort en post –Ändrar en post –Söker –Sorterar –Skriver ut

ITM20 Utskrift av en lista i ett träd procedure PrintTree(Tree) If(trädet inte är tomt)then ( Kör PrintTree för vänster subträd Skriv rotNoden Kör PrintTree för höger subträd ) Vilken skrivs ut först? Vilken skrivs ut tvåa?

ITM21 Sökning i träd Data att lagra i trädet : –A B C D E F G H I J K L M Lagra med ”mittenposten” i roten så blir det enkelt att söka binärt Sökmetod: – Ställ dig i roten –Om söktVärde < aktuelltVärde så gå till vänster barn –Om söktVärde > aktuelltVärde så gå till höger barn –Upprepa detta tills söktVärde = aktuelltVärde eller tills listan är slut

ITM22 Insättning av data i ett träd Data kan sättas in som en nod i botten av trädet oavsett värdet Metod: –Sök i trädet med det nya värdet som sökvärde –Om det nya värdet redan finns görs inget –Om det nya värdet inte finns: Om nya värdet < värdet i aktuell nod så sätt in den nya noden som vänster barn Om nya värdet > värdet i aktuell nod så sätt in den nya noden som höger barn

ITM23 Egentillverkade datatyper Skapa en egen datatyp för att hantera –Namn –Adress –Skonummer struct Person { string name; string address; int shoeNr; }; Person person1, person2; person1.name = ”Olle Svensson”; person1.address= ”Gågatan 3”; person1.shoeNr = 43; person2.name = ”Eva Andersson”; person2.address= ”Byvägen 43”; person2.shoeNr = 37;

ITM24 Egentillverkade datatyper - klasser I datatypen Person kan man lagra data, men inte manipulera det data som är lagrat. Vad betyder: –person1 < person2 ? –person3 = person2 ? I en klass kan man både lagra och utföra operationer på data.