Algoritmer och data strukturer -Länkade listor

Slides:



Advertisements
Liknande presentationer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
Advertisements

Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Logikprogrammering Ons, 25/9
© 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
Arv.
Polymorfism.
Programmeringsteknik för K och Media
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Träd och tillämpningar Data Structures & Problem Solving using Java -- Kapitel 19, 12.
i olika programmeringsspråk
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.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
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
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
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Algoritmer och datastrukturer
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 F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
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.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
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 10 Stränghantering.
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
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
Föreläsning 4 Klasser Och Objekt.
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:
Länkade listor Binära träd
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
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.
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,
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
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 =
Programmeringsteknik för K och Media
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 )
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.
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
Presentationens avskrift:

Algoritmer och data strukturer -Länkade listor

Statisk minnesallokering Statiska minnesstrukturer (Arrayer) För stora / För små ”Jobbiga” add(index i) / remove( index i) operationer n ???

Dynamisk minnesallokering Separata ”noder” Allokeras vid behov Avallokeras när de inte längre behövs Håller information om: Nodens data Adress till nästa nod

En kedja av data Minne 1 6 2 3 5 4

Adress till nästa länk i kedjan En länk (nod) i kedjan Olika sorters listor Enkellänkade listor Dubbellänkade listor Cirkulära länkade listor Data Adress till nästa länk i kedjan public class ListNode { public Object element; public ListNode nextAddress; }

Klassen ListNode / av Object En nod INNEHÅLL class ListNode { public Object element; public ListNode nextAddress; public ListNode( Object theElement ) element= theElement; nextAddress= null; } public ListNode( Object theElement, ListNode n ) element = theElement; nextAddress = n; Konstruerare 1, skapar en ”ej länkad nod ” Konstruerare 2 , skapar en länkad nod

Konstruerare , skapar en ”tom” nod som head Klassen LinkedList class LinkedList { private ListNode head; public LinkedList ( ) head = new ListNode( null ); } // metoder som : add(), remove(), find()…… Listans huvud Konstruerare , skapar en ”tom” nod som head ” känner till”

Minne Enkellänkade listor null Varje länk har en referens till nästa länk i listan Kräver kännedom om ”föregående länk” vid insert() / remove() operationer Minne Huvud next 1 next null 2 next 3 next

Huvud / Svans När är listan slut? När sista länkens nextAddress = null Testa på null under traverseringen public void print() { ListNode temp=head.nextAddress; while( temp!=null ){ System.out.println(temp.element); temp=temp.nextAddress; } Bättre sätt – Huvud / Svans! ”Dummy”-länkar som aldrig tas bort eller bär värden

List traversering public ListNode getNode(Object x) { Ingen möjlighet till indexering som hos statiska arrayer! ”Länk för länk” med start på första länken tills rätt position hittad! public ListNode getNode(Object x) { ListNode temp = head.next; while(temp.element != x) temp = temp.nextAddress; return temp; }

Huvud / Svans Minne Huvud next Svans next 1 next

OBS! Först länka mot svansen sedan bryt länken från huvud Minne Huvud next Svans next 1 next 2 next

Vanliga operationer på länkade listor add() add( int index) remove() find() get( int index) iterator() contains() size() I java gäller operationerna från List interface

Minne Dubbellänkade listor Varje länk har en referens till nästa länk OCH en referens till föregående länk i listan. Förenklar listmanipulationer add( int index) remove() Minne Huvud prev next 1 prev next Svans prev next

Minne Cirkulära listor Ta bort svansen och huvudet och knyt ihop liständarna Minne 1 6 2 5 3 4

Fördelar/ Nackdelar Effektiv när man lägger till och tar bort element Effektiv att hålla listan sorterad Betydligt mer effektivt vid stora datamängder genom att dirigera om pekarna istället för själva länkinnehållet Effektiv användning av minne. Något långsammare, pga. Många minnesallokering Många referensmanipulationer, lite svårare vid implementera och debbug