Datastrukturer och algoritmer
Föreläsning 2
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Innehåll
Listor
Specifikation, Konstruktion
Algoritmmönster
Riktade listor, länkade celler
Specifikation, Konstruktion
Dynamiska resurser
Datastrukturer och algoritmer
VT 2005
2
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Lista
Modell
Pärm
oBläddra, inspektera, lägga till, ta bort
Konstruktion
Dynamiskt med hjälp av länkade celler
Statiskt med hjälp av fält
Datastrukturer och algoritmer
VT 2005
3
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Lista
Diskret linjärt ordnad
Ä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
Datastrukturer och algoritmer
VT 2005
4
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Lista
Generisk datatyp (polytyp)
Lista av typ
oTyp kan vara av vilken typ som helst
Homogen datatyp
Alla element har samma typ
Datastrukturer och algoritmer
VT 2005
5
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Lista
Element
Värde och position
Struktur
Bortser från elementvärden
Position
Plats i strukturen
Datastrukturer och algoritmer
VT 2005
6
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Gränsyta till Lista
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) Datastrukturer och algoritmer
VT 2005
7
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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);
}
Datastrukturer och algoritmer
VT 2005
8
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Implementation av gränsyta till Pos
public interface Pos {
public boolean eq(Pos p);
}
Datastrukturer och algoritmer
VT 2005
9
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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
Datastrukturer och algoritmer
bestämt villkor
VT 2005
10
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Algoritmmönster
Reduktion
Beräknar en funktion av objektets
elementvärden
o Ex. Summera alla tal i en lista
Mappning
Transformera varje elementvärde i en
datastruktur
o Ex. multiplicera alla talen i
Datastrukturer och algoritmer
en lista med 4
VT 2005
11
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Konstruktion
Lista som Fält
 + Snabb inspektion av element
- Fast reserverat utrymme
- Kostsamt sätta in / ta bort element
Datastrukturer och algoritmer
VT 2005
12
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Konstruktion
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
Datastrukturer och algoritmer
Cirkulär eller linjär
VT 2005
13
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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
Datastrukturer och algoritmer
oListor, träd
VT 2005
14
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
”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
Datastrukturer och algoritmer
} //end Cell
VT 2005
15
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Cell används för positioner
private class Cell implements Pos{
private Object value;
private Cell next;
Cell (){this(null,null);} //Create an empty cell
Cell (Object v, Cell n){//Create a cell with
value and reference
value = v;
next = n;
} //end Cell
public boolean eq(Pos p) {
if (((Cell)p).next== this.next) return true;
return false;
}
Datastrukturer och algoritmer
}
VT 2005
16
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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
Java: Inget objekt utan länk
Datastrukturer och algoritmer
VT 2005
17
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Gränsyta till Länk
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
Datastrukturer och algoritmer
VT 2005
18
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Länkad Lista
Länkar mellan elementen
Elementen är en cell som består av länkar
och värde
Dubbel eller enkellänkad
Datastrukturer och algoritmer
VT 2005
19
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Dubbellänkad lista
Före insättning
Datastrukturer och algoritmer
VT 2005
20
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
-Dubbellänkad lista
newNode skapas
Skapa ny nod för insättning
nodeBefore
nodeAfter
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
newNode
nodeBefore:s ”framåt” länk =
newNode
nodeAfter:s ”bakåt” länk =
newNode
Datastrukturer och algoritmer
VT 2005
21
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Dubbellänkad lista
Efter insättning och före borttagning
Datastrukturer och algoritmer
VT 2005
22
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Dubbellänkad lista
Ta bort ett element
nodeBefore
nodeToRemove
nodeAfter
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
Datastrukturer och algoritmer
VT 2005
23
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Dubbellänkad lista
Efter borttagning
Datastrukturer och algoritmer
VT 2005
24
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Riktad Lista
Modell
Slalombana
Kan bara flytta sig framåt
Specialisering av Lista
Datastrukturer och algoritmer
VT 2005
25
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Riktad Lista
Previous och end behövs ej
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
Datastrukturer och algoritmer
VT 2005
26
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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) Datastrukturer och algoritmer
VT 2005
27
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Riktad Lista
Konstruerad som
Fält
Dubbellänkad Lista
Enkellänkad Lista
Enkellänkad Lista
Mer ekonomisk
Datastrukturer och algoritmer
VT 2005
28
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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
Datastrukturer och algoritmer
oGränspositioner
VT 2005
29
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
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
Datastrukturer och algoritmer
oSätt X:s värde till v
VT 2005
30
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004
Dynamiska resurser
Skapar dataobjekt för tillfälliga behov
Kill- lösgör resurser
Create - reserverar resurser
Vålnader
Sophämtning
Datastrukturer och algoritmer
VT 2005
31
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004