Presentation laddar. Vänta.

Presentation laddar. Vänta.

Datastrukturer och algoritmer Föreläsning 1-2. Datastrukturer och algoritmer VT08 Innehåll  Kurspresentation och information  Innehållsöversikt, upplägg,

Liknande presentationer


En presentation över ämnet: "Datastrukturer och algoritmer Föreläsning 1-2. Datastrukturer och algoritmer VT08 Innehåll  Kurspresentation och information  Innehållsöversikt, upplägg,"— Presentationens avskrift:

1 Datastrukturer och algoritmer Föreläsning 1-2

2 Datastrukturer och algoritmer VT08 Innehåll  Kurspresentation och information  Innehållsöversikt, upplägg, kursmaterial, kursutvärdering, förväntade studie resultat etc...  Föreläsning  Programbyggnadskonst oOlika ansatser oViktiga begrepp  Listor oSpecifikation, Konstruktion oAlgoritmmönster  Riktade listor, länkade celler oSpecifikation, Konstruktion oDynamiska resurser  Att läsa: Kapitel 1-4

3 Datastrukturer och algoritmer VT08 Kursens innehåll  Abstrakta datatyper  Begrepp, definition, konstruktion  Algoritmer  Tids- och rumsfrågor  Designprinciper  Sökning  Sortering  Introduktion till projektarbete enligt LIPS- modellen  Både teoretiskt och praktiskt

4 Datastrukturer och algoritmer VT08 Kursens innehåll – Abstrakta Datatyper (ADT)  Många olika ADT kommer att diskuteras!  Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mm  Grundbegrepp  Vad är en organisation, modell, gränsyta, sorterad ADT, mm  Primär vs. sekundär struktur  Absolut vs. relativ komplexitet  Varje ADT beskrivs på ungefär samma sätt  Organisation, Modell, Gränsytan (formell, informell)  Sätt att implementera o+/-, när var hur, komplexitet för de viktigaste operationerna  Vart hittar vi ADT typiskt, vilka typproblem? oHur hänger ADT ihop med andra ADT? oAlgoritmer på ADT

5 Datastrukturer och algoritmer VT08 Kursens innehåll – Algoritmer  Tids och rumsfrågor  Exekvering, implementering, underhåll  Tids- och rumskomplexitet oFokus på tidskomplexitet –T(n) för en alg => O(n) oExperimentell och asymptotisk analys  Att beskriva algoritmer  Designprinciper  Brute force, Divide&conquer, Greedy och dynamisk programmering

6 Datastrukturer och algoritmer VT08 Kursens innehåll – Algoritmer  Sökning (traversering)  Vad är traversering  Linjär- och Binärsökning o+/- oKrav på implementationen av ADTn  Sortering  Varför sorterar vi?  Sorterad ADT vs sortering av data  5-6 olika algoritmer, inklusive analys o+/- oStabil sortering

7 Datastrukturer och algoritmer VT08 Kursens innehåll – Projektarbete enligt LIPS-modellen  LIPS utvecklad i Linköping   En introduktion och sedan får ni arbeta med en delmängd av modellen Bilden tagen från websidan ovan

8 Datastrukturer och algoritmer VT08 Kursens upplägg  Föreläsningar (16 st)  Teoripresentation och lite praktiska inslag  Gruppövningar (4 st)  3 grupper, SI-stil  OBS! Obligatorisk närvaro på gruppövning 4!  Individuell handledning i datorsal eller på handledarens rum  Examination  Tentamen (moment 1)  6 obligatoriska uppgifter (moment 2)

9 Datastrukturer och algoritmer VT08 Tentamen  Ordinarie tentamen 5/ i Noliahallen på Nolia!  Anmälan krävs!  https://www.cs.umu.se/information/tenta/ https://www.cs.umu.se/information/tenta/  Senast 10 dagar innan tentan ges  Enligt rektors beslut kodas tentamen  Kan tyvärr leda till längre tid innan resultat anslås pga administrativt trassel! oMax 15 arbetsdagar (för första tentan blir det 30/6)  Ett urval av gamla tentamina från tidigare år finns på kurssidan.

10 Datastrukturer och algoritmer VT08 Obligatoriska uppgifter  2 OU utförs enskilt och 4 OU utförs parvis  Ordinarie sista redovisningsdag står på varje uppgifts webbsida.  OU bedöms med G, K, O eller U  Komplettering inom 5 arbetsdagar från första tillfälle för uthämtning  Finns ett uppsamlingstillfälle (augusti).  Måste göra om alla uppgifter  Kan vara nya uppgifter/nya handledare

11 Datastrukturer och algoritmer VT08 Obligatoriska uppgifter  En uppgift som är 5 minuter sen är för sen!  Ansökan om uppskov pga exvis sjukdom ska ske minst en dag före sista inlämningsdag.  Kursansvarig bedömer uppskoven.  Notera att det ingår i examinationen att ni ska lära er att hinna blir klar med uppgifterna i tid. o“Jag hinner inte” kommer inte att godtas som enda skäl till uppskov.  Resultat anslås på kursens hemsida.

12 Datastrukturer och algoritmer VT08 OU2  Implementera tabeller  Individuell, inlämnas 15/4 klockan  Syfte: Du ska  börja få en förståelse varför man använder sig av abstrakta datatyper,  analysera för- och nackdelar med olika implementationer av ADT:n Tabell,  öva dig i att hantera dynamiska strukturer,  öva dig i skriftlig presentation.

13 Datastrukturer och algoritmer VT08 OU4  Analysera algoritmer  Experimentellt (individuell)  Asymptotiskt (gruppövning med individuell redovisning)  Inlämnas 8/5 klockan  Syfte: Du ska  få prova på att testa och utvärdera implementationer av okända algoritmer.  öva er på att analytiskt utvärdera algoritmer.

14 Datastrukturer och algoritmer VT08 Projektet  Implementera mjukvaran i en Router  Utförs parvis och delredovisas vid 4 tillfällen.  Syftet: Ni ska  få praktiska kunskaper om användandet av datatyper och algoritmer.  utföra ett arbete under tidspress och lära er planera ert arbete och prioritera bland olika lösningar för att få en färdig produkt som uppfyller givna krav.  få en introduktion till en projektmodell och träna att arbeta utifrån den  öva er att redovisa ett större arbete muntligt och skriftligt.

15 Datastrukturer och algoritmer VT08 Projektets delredovisningar  OU1 inlämnas 3/4 klockan  Skapande av en projektgrupp  OU3 inlämnas 21/4 klockan  Skapande av en projektplan  OU5 inlämnas 15/5 klockan  Muntlig redovisning av pågående arbete på gruppövning 4 och reviderad projektplan  OU6 inlämnas 5/6 klockan  Slutredovisning av färdig produkt och dokumentation av projektet

16 Datastrukturer och algoritmer VT08 Kursens (och bokens) strategi:  Beskriva datastrukturer och ansatser så neutralt och språkoberoende som möjligt.  Kunskaperna mer generella och allmänt tillämpbara.  Flesta studenterna har Java som bakgrund, några har C som bakgrund.  Läser du DV, ID, eller TDV eller har läst TDBA63, TDBA62, 5DV081 eller 5DV090 ska du implementera koden i Java.  Läser du ett annat studieprogram, eller läst TDBA66, TDBA39 eller 5DV035 så får du lösa uppgiften i C även om vi rekommenderar att den görs i Java.  Oftast pseudokod på föreläsningarna

17 Datastrukturer och algoritmer VT08 Kursmaterial  Kurslitteratur  Janlert L-E., Wiberg T., Datatyper och algoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN  Föreläsningsunderlag (finns på websidan)  Referenslitteratur:  Mark Allen Weiss, "Datastructures and Algorithm Analysis in Java", 2 ed, Pearson, Addison Wesley ISBN  Mark Allen Weiss, "Datastructures and Algorithm Analysis in C” Addison Wesley Longman ISBN

18 Datastrukturer och algoritmer VT08 Kursmaterial  Allt material som ev. delas ut under kursen   Mycket information skickas via mail. Läs dina cs-mail minst en gång om dagen!  Gör forward: https://support.cs.umu.se/userinfo/info/index.html  Mail som skickas till hela gruppen lagras i ett arkiv

19 Datastrukturer och algoritmer VT08 Mina målsättningar  Rolig och viktig kurs  Bli en bättre programmerare och inse att man blivit det  Känna till kända lösningar på typiska problem  Konstruera robusta och korrekta program  Konstruera och beskriva algoritmer och datatyper  Planera sitt arbete så att projekt blir klar i tid  Förstå komplexitetsbegreppet  Tid och rum  Bli bättre på att kommunicera resultat

20 Datastrukturer och algoritmer VT08 Vad krävs för att nå dit?  Ge kursen en ärlig chans  Kom i tid till föreläsningarna  Läs boken, förstå vad som står där  Gör övningar  Börja med laborationerna i tid  Utnyttja handledningen  Säg till om det är något som inte funkar

21 Datastrukturer och algoritmer VT08 Hur kan man lägga upp sina studier?  En 7,5 hp kurs motsvarar 200h total studietid för ”normalstudenten”.  5 veckor ger ca 40h/vecka.  Delta på undervisningen  Läsa boken  Göra obligatoriska uppgifter  Repetera/”tentaplugga”  Ofta samma sak som att arbeta med OU...

22 Datastrukturer och algoritmer VT08 Hur kan jobbet fördelas?  30h läsa boken+LIPS-material  5 min*max 370 sidor  40h övrigt ”tentaplugg”  40h schemalagd undervisning (F/G)  90h kvar till de obligatoriska uppgifterna  15h till OU2  25h till OU4  50h till projektet (* 2 personer = 100h)  PLANERING AV ARBETET VIKTIGT!

23 Översikt över kursen Vecka F/G Plugg OU Projektet 50h Projektet 50h * 2 personer = 100h! OU3 8h OU1 0.5h OU2 15h OU4 25h OU5 8h OU6 33,5h

24 Datastrukturer och algoritmer VT08 Kursutvärdering från ifjol  Bara 37 av 114 (32%) som svarade skriftligt  Muntlig utvärdering genomfördes på sista föreläsningen (ca 40)  90 studenter aktiva hela kursen igenom  Sammanfattning finns på sidan 

25 Datastrukturer och algoritmer VT08 Till den som ska planera kursen nästa gång:  Komplexitetsuppgiften (OU3)  Lägg gruppövningen (gö) längre ifrån inlämningsdagen.  Var tydlig med att uppgiften kräver enskilt arbete utöver gö och att man bör ha försökt lösa uppgiften före gö för att få optimal hjälp från gö.  Routerlabben (OU2 och OU4)  Gör om OU2 så att den till exempel går ut på att skriva en problembeskrivning för OU4. oTanken att "tvinga" studenterna att läsa OU4 och bearbeta specifikationen lyckades inte helt.  Skriv om specifikationen av OU4 från grunden eftersom den fortfarande är svår att övergripa.  Fundera på om Routerlabben ska bytas ut mot något annat, exempelvis träd.  Handledning och rättning av obligatoriska uppgifter  Gemensamma rättningsmallar för att minimera "orättvisor".  Uppmuntra grupphandledning och sköt inte handledningen via mail. oSamma frågor ställs flera gånger och mailandet tar för mycket tid från personlig handledning.

26 Datastrukturer och algoritmer VT08 Förändringar på kursen sen förra året  Komplexitetsuppgiften (OU3 i år OU4)  En vecka mellan gruppövning och inlämnande  Info i specifikationen om förberedelse och tidsåtgång  Routerlabben (OU2 och OU4)  Drivs i projektform med 4 avstämningar  Uppgiften och specifikation ordentligt genomarbetad  Handledning och rättning av obligatoriska uppgifter  Gemensamma mallar/diskussioner  Handledningsresursen räcker inte till mailsvar kring kodfrågor  Mängden föreläsningar om träd minskar och en föreläsning om projekt och projektmodellen LIPS införs.

27 Datastrukturer och algoritmer VT08 Registrering  Sker på studentexpeditionen eller hos Pedher Johansson.  Alla som antagits med villkor (alla studenter på C/DV/ID) måste visa att man uppfyller förkunskapskraven.  Skriv ut ett Ladokutdrag! oGå till oLogga in (med ert UMDAC-student konto + lösenord) oVälj fliken ”Expedition”  Markera gärna förkunskaperna (5DV081/5DV090) med överstrykningspenna...  Ingen examination förrän man är registrerad  Regga dig innan första uppgiften ska vara inlämnad (på torsdag)!

28 Datastrukturer och algoritmer VT08 Förkunskaperna innebär i praktiken  Studenten ska  kunna implementera en godtycklig algoritm- beskrivning i JAVA/C.  ha god erfarenhet av problemlösning.

29 Datastrukturer och algoritmer VT08 Kursens mål FSR (1)  Efter avslutad kurs ska studenten kunna:  redogöra för grundläggande begrepp relaterade till datastrukturer och algoritmer  redogöra för organisation och specifikation för grund- läggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabell  redogöra för grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper  välja lämpliga datatyper och algoritmer för ett givet problem  välja och utföra lämpliga implementationer (konstruk- tioner) av de valda datatyperna och algoritmerna

30 Datastrukturer och algoritmer VT08 Kursens mål FSR (2)  Efter avslutad kurs ska studenten kunna:  analysera enklare algoritmer praktiskt och teoretiskt med avseende på prestanda  använda sig av grundläggande problemlösningsstrategier (som till exempel divide and conquer, brute force, greedy och dynamisk programmering) på nya problem  tillämpa de teoretiska kunskaperna och objektoriente- ringsparadigmen praktiskt på ett programmeringsprojekt, dvs. konstruera en komplett programvara inklusive doku- mentation (med systembeskrivning och webbaserad API) utifrån givna riktlinjer  utforma en enkel arbetsplan för ett programmerings- projekt som utförs i grupp samt dokumentera, följa upp och skriftligt utvärdera den gjorda planeringen.

31 Datastrukturer och algoritmer VT08 Inblandade personer  Föreläser  Lena Kallin Westin  Ola Ringdahl  Håller i gruppövningar:  Ola Ringdahl  Linus Jonsson  Oskar Lindgren  Handleder och rättar obligatoriska uppgifter:  Linus Jonsson  Oskar Lindgren  Johan Westerlund

32 Datastrukturer och algoritmer VT08 MIT-huset, våning 4 Student exp. support Lablådor Oskar Lena Studievägl. Pedher Studievägl. Lena P Johan

33 Datastrukturer och algoritmer VT08 MIT-huset, våning 2 Linus Ola

34 Programbyggnadskonst, Listor

35 Datastrukturer och algoritmer VT08 Att bygga program ≈ bygga hus/broar  Husbygge  Specifikation/Beskrivning  Material  Verktyg  Utvärdering/uppföljning  Programmering  Problembeskrivning  Systemdesign  Modelleringsverktyg oDatatyper – representera datat i programmet oAlgoritmer – stegvis plan för att utföra något, modellera hur man löser problemet oKontrollstrukturer – för att modellera flödet  Utvärdering/uppföljning oKomplexitetsanalys oValideringskriterier

36 Datastrukturer och algoritmer VT08 Metaforer och världsbilder för programbyggnad  Metaforer för programbyggnad  Instruktionsmetaforen  Problemlösningsmetaforen  Adaptionsmetaforen  Världsbilder/ansatser  Manipulativa ansatsen  Funktionella ansatsen  Objektorienterade ansatsen Låg nivå nära datorn Hög nivå

37 Datastrukturer och algoritmer VT08 Metaforer för programbyggnad  Instruktionsmetaforen  Programmeraren är en arbetsledare  Ger instruktioner till datorn  Datorn följer dessa i tur och ordning till punkt och pricka.  Problemlösningsmetaforen  Vad ska göras och hur ska det göras?  Programmeraren löser problemet (skriver en algoritm) som sedan implementeras.  Adaptionsmetaforen  Programmet är ett objekt som ingår och interagerar med en miljö.  Programmet anpassas till miljön gradvis Låg nivå nära datorn Hög nivå

38 Datastrukturer och algoritmer VT08 Datavärldsbilder  Manipulativa ansatsen  Hantverksmetafor, man har ett (passivt) objekt som bearbetas steg för steg tills man nått målet.  Imperativa språk som C, Pascal, Modula, Ada  Funktionella ansatsen  Matematisk funktionsmetafor, man ändrar aldrig ett objekt. Resultatobjekten är avbildningar av startobjekten.  Funktionella/relationella språk som ML, Lisp, Prolog  Objektorienterade ansatsen  Objekten har själv egenskaper och beteenden och interagerar med andra objekt. Händelsestyrd programmering.  Objektorienterade språk som Java, C++

39 Datastrukturer och algoritmer VT08 Terminologi  Inte alltid enhetlig!  Viktigt sätta grunden för bokens och kursens innehåll.  Data bär information genom att representera något. x ”hej” 7 true ’a’ y 52.1

40 Datastrukturer och algoritmer VT08 Terminologi  Datatyp = objekt + operationer  Objekten finns i en värdemängd/objektmängd  Operationerna kan vara funktioner, relationer och predikat - % ”udda” ”jämn” > / <= * heltal = +

41 datatyp enkel sammansatt... kan vara... Heltal: 1,2,3,4 till exempel Relation (personinfo) Lista av heltal: till exempel namn ålder kön till exempel homogen heterogen kan vara

42 datatyp abstrakt konkret... kan vara... Står det bara ”datatyp” så menar man ”abstrakt datatyp” När man pratar om en datatyp utan att bry sig om och hur den är realiserad i programspråk/hårdvara Kan anses vara abstrakt eftersom... fysisk implementerad konstruerad... kan vara... Implementerad i språket/hårdvaran tex int, char Komplett konstruerad från grunden och redo att användas i ett program En fysisk datatyp är... En datatyp som är impl i en fysik datatyp är... När man besrkivit hur objekten ska representeras och hur operationerna skulle kunna implementeras (algoritmer)

43 Datastrukturer och algoritmer VT08 Mer terminologi:  Element  Beståndsdel i en sammansatt datatyp  Består av värde och position Värde: 2 Position: 3 ac dfghije Värde: d Position: 2:a barn till roten

44 Datastrukturer och algoritmer VT08 Mer terminologi:  Struktur  Bortser från elementvärden  Ändras när element läggs till eller tas bort  Listan (1, 2) och ((1,2,3), (4,5,6)) har samma struktur  Position  Plats i strukturen  Positionsbeskrivningar förändras när element sätts in eller tas bort  Hur man anger positioner avgörs vid konstruktionen av datatypen.  Strukturförändrande operationer behöver returnera nytt positionsvärde

45 Datastrukturer och algoritmer VT08 Genomgång av en datatyp - Beskrivningar  Modell - vardaglig, ”det man modellerar”  Organisation  Grundläggande natur på objekten, linjärt ordnade, före och efter relation etc.  Informell beskrivning  Gränsytan (de operationer som hör till datatypen)  Informell beskrivning av operationernas funktion  Signaturdiagram  Ofta den mest omfattande beskrivningen!  Formell beskrivning  rent matematisk-logisk (axiom och slutsatser)

46 Datastrukturer och algoritmer VT08 Genomgång av en datatyp  Konstruktioner och implementationer  Olika sätt att konkretisera datatypen o”Lista som en array” vs ”Lista som en dynamisk struktur”  Komplexitetsanalys  Exemplen i boken i huvudsak Java eller ML  Tillämpningar och algoritmer  Typproblem och algoritmer som löser dem  Komplexitetsanalys

47 Datastrukturer och algoritmer VT08 Lista  Modell  Pärm oBläddra, inspektera, lägga till, ta bort  Organisation  Diskret linjärt ordnad oÄndligt antal linjärt ordnade element oFörsta / sista element oFöre / efter relation av element (inte värden) oAlla element (utom det sista) har en efterföljare oAlla element (utom det första) har en föregångare

48 Datastrukturer och algoritmer VT08 ADT:n Lista är en  Dynamisk datatyp  Struktur och storlek förändras under datatypens livslängd  Generisk datatyp (polytyp)  Lista av typ oTyp kan vara av vilken typ som helst oLista av heltal, Lista av tecken, etc  Homogen datatyp  Alla element har samma typ

49 Datastrukturer och algoritmer VT08 Lista – Specifikation: Gränsyta abstract datatype List(val) auxiliary 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)

50 Datastrukturer och algoritmer VT08 Lista – Specifikation: Informell funktionsspecifikation  Empty() – skapar ett nytt tomt listobjekt (konstruktor). En tom lista har en position som är First(l) = End(l)  Insert (v,p,l) – sätter in ett element med värdet v omedelbart före position p, returnerar positionen för v  Isempty(l) – true om listan är tom, dvs First(l) = End(l)  Inspect(p,l) – returnerar värdet för elementet på position p. Operationen är inte definierad för listans sista pos  First,End – returnerar listans första resp. sista position. OBS! End pekar på positionen efter sista elementet  Next(p,l) Previous(p,l) – returnerar närmast efterföljande (föregående). Ej definierad för listans sista (första) position  Remove(p,l) – tar bort element i positionen p, returnerar nya positionen för det element som följde omedelbart efter

51 Datastrukturer och algoritmer VT08 Bild från sidan 47 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000

52 Datastrukturer och algoritmer VT08 Varför är specifikationen viktig?  Nu kan vi skapa algoritmer för listor utan att behöva bry oss om hur listan verkligen implementeras.  Ex, Söka efter elementet med värdet v i listan list: If not isEmpty(list) Then p:= first(list) While Not (Next(p,list) = End(list) Or v = inspect(p, list)) Do p:= next(p, list) End

53 Datastrukturer och algoritmer VT08 Implementation av gränsyta till Lista public interface List{ public boolean isEmpty(); public Pos insert(Object v, Pos p); public Object inspect(Pos p); public Pos first(); public Pos end(); public Pos next(Pos p); public Pos previous(Pos p); public Pos remove(Pos p); }

54 Datastrukturer och algoritmer VT08 Implementation av gränsyta till Pos public interface Pos { public boolean eq(Pos p); }

55 Implementation av gränsytan i C /* Funktionsprototyper */ list_t *list_empty(); pos_t *list_insert(void *v, pos_t *pos, list_t *list); int list_isempty(list_t *list); void *list_inspect(pos_t *pos, list_t *list); int list_isend(pos_t *pos, list_t *list); pos_t *list_first(list_t *list); pos_t *list_next(pos_t *pos, list_t *list); pos_t *list_remove(pos_t *pos, list_t *list);

56 Lista – Konstruktion: Statiskt  Lista som Fält +Snabb inspektion av element -Fast reserverat utrymme -Kostsamt sätta in och ta bort element Bild från sidan 51 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000

57 Datastrukturer och algoritmer VT08 Lista – Konstruktion: Dynamiskt  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  Huvudlös eller med huvud  Cirkulär eller linjär

58 Datastrukturer och algoritmer VT08 Länkad Lista  Länkar mellan elementen  Elementen är en cell som består av länkar och värde  Dubbel eller enkellänkad

59 Datastrukturer och algoritmer VT08 Dubbellänkad lista  Före insättning

60 Dubbellänkad lista  Skapa ny nod för insättning newNode nodeBeforenodeAfter newNode skapas nodeAfter = noden som ska vara efter den nya noden nodeBefore = nodeAfter :s ”bakåt” länk newNode :s ”framåt” länk = nodeAfter newNode :s ”bakåt” länk = nodeBefore nodeBefore :s ”framåt” länk = newNode nodeAfter :s ”bakåt” länk = newNode

61 Datastrukturer och algoritmer VT08 Dubbellänkad lista  Efter insättning och före borttagning

62 Datastrukturer och algoritmer VT08 Dubbellänkad lista  Ta bort ett element nodeBefore = nodeToRemove :s ”bakåt” länk nodeAfter = nodeToRemove :s ”framåt” länk nodeBefore :s ”framåt” länk = nodeAfter nodeAfter :s ”bakåt” länk = nodeBefore nodeBeforenodeAfter nodeToRemove

63 Datastrukturer och algoritmer VT08 Dubbellänkad lista  Efter borttagning

64 Datastrukturer och algoritmer VT08 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

65 Datastrukturer och algoritmer VT08 Algoritmmönster  Reduktion  Beräknar en funktion av objektets elementvärden oEx. Summera alla tal i en lista  Mappning  Transformera varje elementvärde i en datastruktur oEx. multiplicera alla talen i en lista med 4

66 Datastrukturer och algoritmer VT08 Riktad Lista  Modell  Slalombana  Man kan ta sig till starten  Man passerar portarna i en riktning  Man kan ”åka” om en del av banan  Organisation  Specialisering av Lista  Har endast en riktning från början av listan och framåt.  Rekursiv definition:  En riktad lista är tom eller har ett första element som följs av en riktad lista

67 Datastrukturer och algoritmer VT08 Riktad Lista – Specialisering  Man tar bort operationer ur gränsytan, utan att mängden objekt som kan konstrueras förändras.  Två objekt som är lika, ska vara lika också i specialiseringen.  Previous och end behövs ej och Isend lagts till  Java: Kan ej ta bort en del av gränsytan  Exceptions för previous och end  Riktad Lista som helt ny klass -Ingen återvinning av kod...

68 Gränsyta till Riktad Lista abstract datatype DList(val) auxiliary 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)

69 Datastrukturer och algoritmer VT08 Riktad Lista – konstruktion  Konstruerad som  Fält  Dubbellänkad Lista  Enkellänkad Lista  Enkellänkad Lista  Mer (rums)ekonomisk – behöver ju ändå inte bakåtlänkarna

70 Datastrukturer och algoritmer VT08 Riktad Lista som Enkellänkad Lista  Problem vid insättning  Lösning:  Representera position mha en länk till föregångarelementet oFysisk och logisk referens  Listhuvud oTomma objekt oGränspositioner

71 Datastrukturer och algoritmer VT08 Enkellänkad Lista  Konstruktion utan huvud  Stopplänkvärde (nil, null)  Insättning före elementet X oSkapa en ny cell oSätt in den efter X oKopiera X:s värde till den nya cellen oSätt X:s värde till v

72 Datastrukturer och algoritmer VT08 n-länkad Cell  Tippel som består av  ett värde  n st länkar  Byggmaterial för andra datatyper  n-länkad struktur  Objekt konstruerade med n-länkade celler oListor, träd  Cell är en implementationsdetalj i ADT:en Lista som kan gömmas för listans klient  Cell kan alltså definieras i klassen som implementerar listan (intern klass), deklareras privat behöver inte ha set & get metoder

73 Datastrukturer och algoritmer VT08 ”1-Cell” private class Cell { private Object data; //data portion private Cell next; //link to next node private Cell(Object dataPortion) { data = dataPortion; next = null; } //end constructor private Cell(Object dataPortion, Cell NextCell) { data = dataPortion; next = NextCell; } //end constructor } //end Cell

74 Datastrukturer och algoritmer VT08 Cell används för positioner private class Cell implements Pos { // se förra sidan för konstruktorer public boolean eq(Pos p) { if (((Cell)p).next == this.next) return true; else return false; }

75 Datastrukturer och algoritmer VT08 Länk  Referens, pekare  En fysisk datatyp i många språk  Objekt som refererar till annat objekt  Konstrueras oftast som index i fält (kursor)  Billigare kopiera länkar till objekt än objekten själva

76 Datastrukturer och algoritmer VT08 Dynamiska resurser  Skapar dataobjekt för tillfälliga behov  Kill – lösgör resurser  Create – reserverar resurser  Vålnader  döda celler som ”går igen”  uppkommer om man dödar celler som det fortfarande finns länkar till.  använd Kill med försiktighet!  Sophämtning  administrativ procedur  identifierar och återvinner objekt som inte utnyttjas (JAVA)


Ladda ner ppt "Datastrukturer och algoritmer Föreläsning 1-2. Datastrukturer och algoritmer VT08 Innehåll  Kurspresentation och information  Innehållsöversikt, upplägg,"

Liknande presentationer


Google-annonser