Ladda ner presentationen
Presentation laddar. Vänta.
1
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Datalogi, Föreläsning 7 Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor Vahid Mosavat, Nada, KTH
2
Datalogi, Föreläsning 7 Länkad lista … Där varje post har en länk till en annan post av samma typ. Exempel: varuvagnar, tågvagnar o.s.v. … En post Vahid Mosavat, Nada, KTH
3
Stack och Kö Stack är en länkad lista som har följande egenskap:
Datalogi, Föreläsning 7 Stack och Kö Stack är en länkad lista som har följande egenskap: när man vill lägga till en ny post i listan då hamnar den nya posten ovanpå (först i listan) alla andra. när vi vill ta bort en post från listan så tas bort posten som finns på toppen (först i listan) av listan. Kö är en länkad lista som har följande egenskap: när man vill lägga till en ny post i listan då hamnar den nya posten i slutet av listan. när vi vill ta bort en post från listan så tas bort från början av listan. Vahid Mosavat, Nada, KTH
4
Datalogi, Föreläsning 7 Kö eller Stack? För att lösa följande problem vilken typ av länkad lista passar bättre? Vi vill beräkna följande: 2*(3+4) + 3*(5-1) Vad har programmeraren använt i simamanager? Vahid Mosavat, Nada, KTH
5
Polish calculator 2*(3+4) + 3*(5-1) Vi skriver om: 2 3 4 + * 3 5 1 - *
Datalogi, Föreläsning 7 Polish calculator 2*(3+4) + 3*(5-1) Vi skriver om: 2 3 4 + * 3 5 1 - * + Vahid Mosavat, Nada, KTH
6
Vilka metoder ska en kö ha?
Datalogi, Föreläsning 7 Vilka metoder ska en kö ha? Det som är viktig i en kö är den första och den sista posten. Varför? enqueue(post) # eller put(post) Lägger en post sist i kön dequeue() # eller get() Returnerar första posten i kön och tar bort posten från kön Vahid Mosavat, Nada, KTH
7
Vilka metoder ska en stack ha?
Datalogi, Föreläsning 7 Vilka metoder ska en stack ha? En stack ska bara ta reda på det sista posten i listan. Varför? push(p) Metoden push lägger posten p på toppen av stacken. pop() Metoden pop returnerar posten som finns på toppen av stacken och tar bort posten från stacken. Vahid Mosavat, Nada, KTH
8
Att gå igenom listan top 1 10 7 p p=top; while p!=None: print p.value
Datalogi, Föreläsning 7 Att gå igenom listan top 1 10 7 None p p=top; while p!=None: print p.value p=p.next Vahid Mosavat, Nada, KTH
9
Att ta bort en post ur stacken
Datalogi, Föreläsning 7 Att ta bort en post ur stacken top 1 10 7 None pop(): x=top.value top=top.next return x Vahid Mosavat, Nada, KTH
10
Att lägga till en post i listan
Datalogi, Föreläsning 7 Att lägga till en post i listan top 1 10 7 None 3 None push(x): n=Nod(x) n.next=top top=n Vahid Mosavat, Nada, KTH
11
Stack och Kö Stack top … Kö last first … None None
Datalogi, Föreläsning 7 Stack och Kö Stack top … None Kö last first … None Vahid Mosavat, Nada, KTH
12
Binära träd root None None None None None None None None None None
Datalogi, Föreläsning 7 Binära träd root None None None None None None None None None None None None None Vahid Mosavat, Nada, KTH
13
Datalogi, Föreläsning 7 Nivåer i binärträd rot 1 10 2 5 11 3 1 4 7 13 4 8 3 6 2 12 14 15 9 Antal nivå i ett fullt binärträd = log (N+1) , där N är antalet post i trädet. I detta exempel vi har 15 poster och log(15+1) alltså 4 nivåer Vahid Mosavat, Nada, KTH
14
Exempel class Nod: tal=None vänster=None höger=None
Datalogi, Föreläsning 7 Exempel class Nod: tal=None vänster=None höger=None def __init__(self,t): self.tal=t Vahid Mosavat, Nada, KTH
15
Räkna antal poster i binärträd
Datalogi, Föreläsning 7 Räkna antal poster i binärträd antal( r ): if r == None: return 0 return 1 +antal(r.vänster)+ antal(r.höger) Vahid Mosavat, Nada, KTH
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.