Presentation laddar. Vänta.

Presentation laddar. Vänta.

Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor

Liknande presentationer


En presentation över ämnet: "Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor"— Presentationens avskrift:

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 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


Ladda ner ppt "Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor"

Liknande presentationer


Google-annonser