Datastrukturer och algoritmer

Relevanta dokument
Datastrukturer och algoritmer (Python) Algoritmer och listor

Datastrukturer och algoritmer

Datastrukturer och algoritmer

Datastrukturer och algoritmer

Datastrukturer och algoritmer

Datastrukturer och algoritmer

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

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

TDDC30. 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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

Tommy Färnqvist, IDA, Linköpings universitet

Innehåll. F7: Tabell, hashtabell, relation & lexikon. Gränsyta till Tabell. Tabell. Tabell Hashtabell Relation Lexikon.

Datastrukturer. föreläsning 3. Stacks 1

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Föreläsning 4 Innehåll

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

Abstrakta datastrukturer

2 Modul 2 - (Länkade) Listor

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

Datastrukturer och algoritmer

maxlist-1. Indexerad lista Länkad lista

Länkade strukturer. (del 2)

Föreläsning 2 Datastrukturer (DAT037)

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

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

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

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

Innehåll. Föreläsning 10. Specifikation. Mängd. Specifikation. Konstruktion av mängd. Mängd Lexikon Hashtabell

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Föreläsning Datastrukturer (DAT036)

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

Datastrukturer och algoritmer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

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

Dagens föreläsning Programmering i Lisp Fö 5

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

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

TDIU01 - Programmering i C++, grundkurs

Datastrukturer. föreläsning 6. Maps 1

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

2 Pekare och dynamiska variabler.

Datastrukturer. Föreläsning 5. Maps 1

TDDC76 - Programmering och Datastrukturer

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

Poster. Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur.

TDDC76 - Programmering och Datastrukturer

Repetition av OOP- och Javabegrepp

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Pascal. Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur.

Poster... Poster. Poster... Poster...

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

Repetition av OOP- och Javabegrepp

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Maskinorienterad programmering, IT2

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

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

Föreläsning Datastrukturer (DAT036)

Datastrukturer och algoritmer

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

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Föreläsning 14 Innehåll

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

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

Föreläsning 3. Stack

Exempeltenta GruDat 2002/2003

Länkade strukturer, parametriserade typer och undantag

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Tentamen Datastrukturer, DAT037 (DAT036)

Datastrukturer. föreläsning 10. Maps 1

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

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Facit Tentamen TDDC (7)

Föreläsning 2. Stackar, köer och listor TDDC91,TDDE22,725G97: DALG. Innehåll. 1 ADT stack. 1.1 Tillämpningar

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Föreläsning 6: Introduktion av listor

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

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

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

Magnus Nielsen, IDA, Linköpings universitet

Tentamen Datastrukturer (DAT037)

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Djup/ytlig kopiering av containrar med referensobjekt. Allmänt. Vad ska container innehålla?

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

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

Dugga Datastrukturer (DAT036)

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

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

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

Föreläsning 3 Datastrukturer (DAT037)

3 Listor. 3.1 Envägslistor

Tommy Färnqvist, IDA, Linköpings universitet

Transkript:

Innehåll Datastrukturer och algoritmer Föreläsning 2 Listor Specifikation, Konstruktion Algoritmmönster Riktade listor, länkade celler Specifikation, Konstruktion Dynamiska resurser 24 25 Modell Pärm Bläddra, inspektera, lägga till, ta bort Konstruktion Dynamiskt med hjälp av länkade celler Statiskt med hjälp av fält/arrayer Ändligt antal linjärt ordnade element Första / sista element Före / efter relation Dynamisk datatyp Struktur och storlek förändras under datatypens livslängd 26 27 Generisk datatyp (polytyp) av typ Typ kan vara av vilken typ som helst Homogen datatyp Alla element har samma typ Element Värde och position Struktur Bortser från elementvärden Position Plats i strukturen 28 29

Gränsyta till Tänkbar gränsyta i C!"#$%!&$'(!$!$)*+ List(val)!,-./.!%) pos! Empty() -> List(val) Insert(v:val,p:pos,l:List(val))->(List(val),pos) Isempty (l:list(val)) -> Bool Inspect (p:pos,l:list(val)) -> val First (l:list(val)) -> pos End (l:list(val)) -> pos Next(p:pos,l:List(val)) -> pos Previous(p:pos,l:List(val)) -> pos Remove((p:pos,l:List(val)) ->(List(val),pos) typedef void * Data; list Empty(void); bool isempty(list l); Pos insert(list l, Data v, Pos p); Data inspect(list l,pos p); Pos first(list l); Pos end(list l); Pos next(list l, Pos p); Pos previous(list l, Pos p); Pos remove(list l, Pos p); 30 31 Algoritmmönster Traversering Besöker systematiskt alla element Sökning Söker det första elementet som uppfyller ett bestämt villkor Filtrering Filtrerar ut alla element som uppfyller ett bestämt villkor Algoritmmönster Reduktion Beräknar en funktion av objektets elementvärden Ex. Summera alla tal i en lista Mappning Transformera varje elementvärde i en datastruktur Ex. multiplicera alla talen i! en lista med 4 32 33 som Fält + Snabb inspektion av element - Fast reserverat utrymme - Kostsamt sätta in / ta bort element Länkade strukturer + Insättning / borttagning går snabbt + Minnesutrymmet är proportionellt mot! storleken + Allokera minne när det behövs - länkarna behöver också minnesutrymme - Kommer bara åt listelement genom att traversera från listans början 34 35

n-länkad Cell Cell Tippel som består av ett värde n stycken länkar Byggmaterial för andra datatyper n-länkad struktur Objekt konstruerade med n-länkade celler Listor, träd typedef struct Cell{ DATA data struct Cell *next } Cell; 36 37 Cell används för positioner typedef Cell * Position; Dubbellänkad Länkar mellan elementen Elementen är en cell som består av länkar och värde 38 39 Före insättning - Skapa ny nod för insättning skapas = noden som ska vara efter den nya noden = :s bakåt länk :s framåt länk = :s bakåt länk = :s framåt länk = :s bakåt länk = 40 41

Efter insättning och före borttagning Ta bort ett element nodetoremove = nodetoremove:s bakåt länk = nodetoremove:s framåt länk :s framåt länk = :s bakåt länk = 42 43 Efter borttagning Modell Riktad Slalombana Kan bara flytta sig framåt Specialisering av 44 45 Riktad Gränsyta till Riktad Previous och end behövs ej Isend lagts till 46!"#$%!&$'(!$!$)*+ DList(val)!,-./.!%) pos! Empty() -> DList(val) Insert(v:val,p:pos,l:DList(val)) ->(DList(val),pos) Isempty (l:dlist(val)) -> Bool Inspect (p:pos,l:dlist(val)) -> val First (l:dlist(val)) -> pos Isend (p:pos,l:dlist(val)) -> Bool Next(p:pos,l:DList(val)) -> pos Remove((p:pos,l:DList(val)) ->(DList(val),pos) 47

Konstruerad som Fält Dubbellänkad Enkellänkad Enkellänkad Mer ekonomisk Riktad Enkellänkad Problem vid insättning Lösning: Representera position mha en länk till föregångarelementet Listhuvud Tomma objekt Gränspositioner 48 49 Enkellänkad Konstruktion utan huvud Stopplänkvärde (nil, null) Insättning före elementet X Skapa en ny cell Sätt in den efter X Kopiera X:s värde till den nya cellen Sätt X:s värde till v Länk Referens, pekare Objekt som refererar till annat objekt Konstrueras oftast som index i fält (kursor) Billigare kopiera länkar till objekt än objekten själva 50 51 Gränsyta till Länk Dynamiska resurser Abstract datatype! Make Nil Isnil Follow Equal Link (obj) (x : obj) -> Link (obj) ( ) -> Link (obj) (l : Link (obj)) -> Bool (l : Link (obj)) -> obj (l1,l2 : Link (obj)) -> Bool 52 Skapar dataobjekt för tillfälliga behov Kill- lösgör resurser Jämför med i free C Create - reserverar resurser jämför med malloc, calloc, osv i C Vålnader minne som är avallokerat, men som vi fortfarande refererar till Sophämtning 53