Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor Datalogi, Föreläsning 7 2017-04-06 Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor Vahid Mosavat, Nada, KTH
Datalogi, Föreläsning 7 2017-04-06 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
Stack och Kö Stack är en länkad lista som har följande egenskap: Datalogi, Föreläsning 7 2017-04-06 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
Datalogi, Föreläsning 7 2017-04-06 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
Polish calculator 2*(3+4) + 3*(5-1) Vi skriver om: 2 3 4 + * 3 5 1 - * Datalogi, Föreläsning 7 2017-04-06 Polish calculator 2*(3+4) + 3*(5-1) Vi skriver om: 2 3 4 + * 3 5 1 - * + Vahid Mosavat, Nada, KTH
Vilka metoder ska en kö ha? Datalogi, Föreläsning 7 2017-04-06 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
Vilka metoder ska en stack ha? Datalogi, Föreläsning 7 2017-04-06 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
Att gå igenom listan top 1 10 7 p p=top; while p!=None: print p.value Datalogi, Föreläsning 7 2017-04-06 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
Att ta bort en post ur stacken Datalogi, Föreläsning 7 2017-04-06 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
Att lägga till en post i listan Datalogi, Föreläsning 7 2017-04-06 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
Stack och Kö Stack top … Kö last first … None None Datalogi, Föreläsning 7 2017-04-06 Stack och Kö Stack top … None Kö last first … None Vahid Mosavat, Nada, KTH
Binära träd root None None None None None None None None None None Datalogi, Föreläsning 7 2017-04-06 Binära träd root None None None None None None None None None None None None None Vahid Mosavat, Nada, KTH
Datalogi, Föreläsning 7 2017-04-06 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
Exempel class Nod: tal=None vänster=None höger=None Datalogi, Föreläsning 7 2017-04-06 Exempel class Nod: tal=None vänster=None höger=None def __init__(self,t): self.tal=t Vahid Mosavat, Nada, KTH
Räkna antal poster i binärträd Datalogi, Föreläsning 7 2017-04-06 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