SlideShare a Scribd company logo
Mönster och
datastrukturer, del 2
Data- och informationsvetenskap: Objektorienterad programmering och modellering för IA
Johan Holmberg 2019-10-22
Dagens agenda
• Förra föreläsningen
• Datastrukturer
Vad är ett mönster?
Mönster är generella lösningar på vanligt
förekommande problem.
För arkitektur: Alexander et al. 1977:
”Each pattern describes a problem which occurs over and over and
over again in our environment, and then describes the core of a
solution to that problem, in such a way that you can use this solution
a million times over, without ever doing it the same way twice.”
A place to wait
(exempel från Alexander
et al. (1977))
…in any office, or workshop, or public
service, or station, or clinic, where
people have to wait – Interchange (34),
Health Center (47), Small Services
without Red Tape (81), Office
Connections (82), it is essential to
provide a special place for waiting, and
doubly essential that this place not
have the sordid, enclosed, time-slowed
character of ordinary waiting rooms.
Olika typer av mönster
Analys-mönster
Beskriver koncept som är
viktiga för att modellera
krav.
Arkitekturiella mönster
Beskriver hur de större
komponenterna i ett system
är strukturerade i förhållande
till varandra.
Design-mönster
Beskriver struktur och
interaktion mellan mindre
komponenter i koden.
Anti-mönster
Hur man inte bör göra –
lösningar som visat sig vara
olämpliga på olika sätt.
Designmönster
Designmönster beskrivs strukturerat. Mallarna för dessa varierar
lite beroende på varifrån de kommer. Generellt bör en beskrivning
av ett mönster innehålla:
– Namn
– Problembeskrivning
– Kontext
– Krafter/Forces
– Lösning
Olika typer av designmönster
Creational patterns – skapa instansobjekt
Structural patterns – design av klasser och relationer
Behavioural patterns – kommunikationsmönster mellan
objekt
Ursprung i GoF:s Software Patterns
Datastrukturer
Datastrukuturer,
vad är det?
Olika sätt att representera information
Dagens föreläsning avhandlar några
vanliga datastrukturer.
Datastrukturer
Information i ett modern datorsystem är i grunden
representerat av en serie binära tal (1/0, sant/falskt,
etc).
Vi behöver ordna och tolka dessa binära tal för att
kunna representera olika former av data. Vi kallar
dessa representationer för datastrukturer.
Först och främst! Python...
I Python är alla datatyper och datastrukturer
egentligen objekt. För vårt vidkommande kan vi dock
bortse från det.
Objekt
Objekt är data i minnet som refereras av en pekare
eller en referens. Detta kan vara enkla variabler, men
även komplicerade datastrukturer eller funktioner.
I dagligt tal är objekt data som ordnas enligt ett givet
mönster. Hos klassobjekt bestäms denna ordning av
dess klassdeklaration.
Datastrukturer
Vi delar upp datastrukturer i primitiva och abstrakta
datatyper.
Primitiva datatyper är datatyper som (generellt sett)
tar upp en minnesplats.
Abstrakta datatyper tar upp två eller fler
minnesplatser.
Atomärer
Atomära datastrukturer
Med annat namn: primitiver
Enkla datarepresentationer som ryms i en minnescell
(vanligtvis 4 eller 8 bytes). Kan i en del fall ta upp flera
minnesceller, beroende på vilket språk som används.
Alla primitiver är egentligen samma sak: binära
talsekvenser. Det enda som skiljer dem åt är hur vi
väljer att tolka och använda dem.
Heltal – integers
Heltal (eng. Integer) är naturliga tal (exempelvis 42, 0, -
13). En helt grundläggande datatyp som kan användas
för att representera de flesta andra datatyper.
I Python: int
>>> type(43)
<class 'int'>
Booleska värden – booleans
En datatyp som kan anta två värden: sant eller falskt.
Representeras i många språk av 0 för sant, -1 för falskt. I
Python är de uppräknade värden (se nästa bild).
I Python: bool
>>> type(True)
<class 'bool'>
Uppräkningstyper – enums
Uppräkningstyper är heltal kopplade till en
uppsättning namn. Detta kan användas till att
representera exempelvis en färgpalett eller liknande.
Flyttal – float
Flyttal (eng. Float) är decimaltal. De representeras
som produkten av två heltal: signifikanden (eller
mantissan) och exponenten.
I Python: float
>>> type(3.14)
<class 'float'>
Tecken – characters
Tecken (eng. Character eller Char) är ett binärt heltal som
representerar ett tecken i en teckenuppsättning. Den nu
vanligaste teckenuppsättningen är Unicode.
I Python:
>>> chr(2354)
'ल'
Referenser
Referenser är platser i
minnet som pekar på
objekt. Dessa kan ses
som “namn” på objekt.
Därför kan flera
referenser peka på
samma objekt.
Objektet
Johan
(en referens)
ac8647
(en referens)
Gamling
(en referens)
Referenser, forts
Referenser kan pekas
om till nya objekt. Detta
gör att samma referens
kan referera till olika
objekt i olika stadier av
dess livslängd.
>>> a = [0]
>>> b = a
>>> print(b)
[0]
>>> b.append(2)
>>> print(a)
[0, 2]
>>> a = []
>>> print(b)
[0, 2]
Abstrakta datatyper
Abstrakta datatyper
Mer avancerade datarepresentationer som tar upp
flera minnesceller. Dessa kallas allmänt för
datastrukturer.
Alla typer av abstrakt sammansatta data är egentligen
samma sak: sekventiellt ordnade primitiver. Det enda
som skiljer dem åt är hur vi väljer att tolka och
använda dem.
Vektorer (arrays)
En vektor (eng. Array) är en ordnad, sekventiellt lagrad lista av
objekt. Varje värde i vektorn är indexerbart.
Tvådimensionella vektorer kallas ofta för matriser.
I Python saknas egentligen vektorer, men motsvaras av listor:
>>> a = [1,2,4,8]
>>> a[2]
4
Strängar
Ett specialfall av vektorn är strängarna (eng. String).
Dessa är vektorer av tecken. Således har strängar
samma egenskaper vektorer, vilket innebär att varje
tecken i strängen är identifierbar med hjälp av ett index.
I Python och många andra språk är String en klass
med en massa trevliga metoder som vi kan använda
för att manipulera strängen.
Listor
Listor är precis som vektorer sekventiellt ordnade
objekt, men med skillnaden att dessa objekt har en
relation till sina grannar. Den enklaste listtypen är den
länkade listan, där en nod består av en primitiv följd
av en referens till nästa nod i listan.
Grafer
Grafer är, precis som listor, datastrukturer där de
ingående objekten, noderna, har relationer till varandra.
Relationerna, som anger grannar (och oftast har en
riktning) kallas för bågar (eng. edges). Ett exempel på
grafer är de tillståndsdiagram som vi arbetat med i
kursen.
Grafer är bra för att representera relationer mellan
objekt.
Träd
Träd är, precis som grafer, datastrukturer där de
ingående objekten, noderna, har relationer till varandra.
Till skillnad från graferna har bågarna i ett träd alltid
enbart en riktning, utgåendes från rotnoden. Varje gren i
trädet är i sig ett träd.
Träd kan, om de är sorterade, göra sökningar väldigt
effektiva. Dessa trän kallas då för sökträd. Exempel:
https://www.youtube.com/watch?v=5TQIOXHGKuM
Associativa vektorer
En associativ vektor (eng. Associative array eller Map) är en samling
objekt, benämnda värden, där varje värde identifieras med en nyckel.
I Python motsvaras detta av dictionary. Exempel:
>>> cat = {
... "name": "Zorro",
... "age": 7
... }
>>> print(cat["name"])
Zorro
Hashmaps
Ett exempel på en associativ vektor är hashmap, där
varje värde representeras av ett heltal, ungefär som i
en vektor. Detta heltal är en hash, vilket innebär att
det räknas ut baserat på egenskaperna hos det objekt
det representerar. Den underliggande datastrukturen
är ofta ett sökträd.
Köer
En kö (eng. Queue) är
en sekventiellt ordnad
datastruktur, i vilken
insättningar och uttag
sker i ordningen först in,
först ut.
Stackar
En stack (eng. Stack) är
precis som kön en sekventiellt
ordnad datastruktur, men där
insättningar och uttag sker
enligt principen sist in, först
ut.
I Python finns denna
funktionalitet inbakad direkt i
listorna:
>>> a = [1,2,4,8]
>>> a.append(16)
>>> print(a)
[1, 2, 4, 8, 16]
>>> a.pop()
16
>>> print(a)
[1, 2, 4, 8]

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Mönster och datastrukturer, del 2

  • 1. Mönster och datastrukturer, del 2 Data- och informationsvetenskap: Objektorienterad programmering och modellering för IA Johan Holmberg 2019-10-22
  • 2. Dagens agenda • Förra föreläsningen • Datastrukturer
  • 3. Vad är ett mönster? Mönster är generella lösningar på vanligt förekommande problem. För arkitektur: Alexander et al. 1977: ”Each pattern describes a problem which occurs over and over and over again in our environment, and then describes the core of a solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.”
  • 4. A place to wait (exempel från Alexander et al. (1977)) …in any office, or workshop, or public service, or station, or clinic, where people have to wait – Interchange (34), Health Center (47), Small Services without Red Tape (81), Office Connections (82), it is essential to provide a special place for waiting, and doubly essential that this place not have the sordid, enclosed, time-slowed character of ordinary waiting rooms.
  • 5. Olika typer av mönster Analys-mönster Beskriver koncept som är viktiga för att modellera krav. Arkitekturiella mönster Beskriver hur de större komponenterna i ett system är strukturerade i förhållande till varandra. Design-mönster Beskriver struktur och interaktion mellan mindre komponenter i koden. Anti-mönster Hur man inte bör göra – lösningar som visat sig vara olämpliga på olika sätt.
  • 6. Designmönster Designmönster beskrivs strukturerat. Mallarna för dessa varierar lite beroende på varifrån de kommer. Generellt bör en beskrivning av ett mönster innehålla: – Namn – Problembeskrivning – Kontext – Krafter/Forces – Lösning
  • 7. Olika typer av designmönster Creational patterns – skapa instansobjekt Structural patterns – design av klasser och relationer Behavioural patterns – kommunikationsmönster mellan objekt Ursprung i GoF:s Software Patterns
  • 9. Datastrukuturer, vad är det? Olika sätt att representera information Dagens föreläsning avhandlar några vanliga datastrukturer.
  • 10. Datastrukturer Information i ett modern datorsystem är i grunden representerat av en serie binära tal (1/0, sant/falskt, etc). Vi behöver ordna och tolka dessa binära tal för att kunna representera olika former av data. Vi kallar dessa representationer för datastrukturer.
  • 11. Först och främst! Python... I Python är alla datatyper och datastrukturer egentligen objekt. För vårt vidkommande kan vi dock bortse från det.
  • 12. Objekt Objekt är data i minnet som refereras av en pekare eller en referens. Detta kan vara enkla variabler, men även komplicerade datastrukturer eller funktioner. I dagligt tal är objekt data som ordnas enligt ett givet mönster. Hos klassobjekt bestäms denna ordning av dess klassdeklaration.
  • 13. Datastrukturer Vi delar upp datastrukturer i primitiva och abstrakta datatyper. Primitiva datatyper är datatyper som (generellt sett) tar upp en minnesplats. Abstrakta datatyper tar upp två eller fler minnesplatser.
  • 15. Atomära datastrukturer Med annat namn: primitiver Enkla datarepresentationer som ryms i en minnescell (vanligtvis 4 eller 8 bytes). Kan i en del fall ta upp flera minnesceller, beroende på vilket språk som används. Alla primitiver är egentligen samma sak: binära talsekvenser. Det enda som skiljer dem åt är hur vi väljer att tolka och använda dem.
  • 16. Heltal – integers Heltal (eng. Integer) är naturliga tal (exempelvis 42, 0, - 13). En helt grundläggande datatyp som kan användas för att representera de flesta andra datatyper. I Python: int >>> type(43) <class 'int'>
  • 17. Booleska värden – booleans En datatyp som kan anta två värden: sant eller falskt. Representeras i många språk av 0 för sant, -1 för falskt. I Python är de uppräknade värden (se nästa bild). I Python: bool >>> type(True) <class 'bool'>
  • 18. Uppräkningstyper – enums Uppräkningstyper är heltal kopplade till en uppsättning namn. Detta kan användas till att representera exempelvis en färgpalett eller liknande.
  • 19. Flyttal – float Flyttal (eng. Float) är decimaltal. De representeras som produkten av två heltal: signifikanden (eller mantissan) och exponenten. I Python: float >>> type(3.14) <class 'float'>
  • 20. Tecken – characters Tecken (eng. Character eller Char) är ett binärt heltal som representerar ett tecken i en teckenuppsättning. Den nu vanligaste teckenuppsättningen är Unicode. I Python: >>> chr(2354) 'ल'
  • 21. Referenser Referenser är platser i minnet som pekar på objekt. Dessa kan ses som “namn” på objekt. Därför kan flera referenser peka på samma objekt. Objektet Johan (en referens) ac8647 (en referens) Gamling (en referens)
  • 22. Referenser, forts Referenser kan pekas om till nya objekt. Detta gör att samma referens kan referera till olika objekt i olika stadier av dess livslängd. >>> a = [0] >>> b = a >>> print(b) [0] >>> b.append(2) >>> print(a) [0, 2] >>> a = [] >>> print(b) [0, 2]
  • 24. Abstrakta datatyper Mer avancerade datarepresentationer som tar upp flera minnesceller. Dessa kallas allmänt för datastrukturer. Alla typer av abstrakt sammansatta data är egentligen samma sak: sekventiellt ordnade primitiver. Det enda som skiljer dem åt är hur vi väljer att tolka och använda dem.
  • 25. Vektorer (arrays) En vektor (eng. Array) är en ordnad, sekventiellt lagrad lista av objekt. Varje värde i vektorn är indexerbart. Tvådimensionella vektorer kallas ofta för matriser. I Python saknas egentligen vektorer, men motsvaras av listor: >>> a = [1,2,4,8] >>> a[2] 4
  • 26. Strängar Ett specialfall av vektorn är strängarna (eng. String). Dessa är vektorer av tecken. Således har strängar samma egenskaper vektorer, vilket innebär att varje tecken i strängen är identifierbar med hjälp av ett index. I Python och många andra språk är String en klass med en massa trevliga metoder som vi kan använda för att manipulera strängen.
  • 27. Listor Listor är precis som vektorer sekventiellt ordnade objekt, men med skillnaden att dessa objekt har en relation till sina grannar. Den enklaste listtypen är den länkade listan, där en nod består av en primitiv följd av en referens till nästa nod i listan.
  • 28. Grafer Grafer är, precis som listor, datastrukturer där de ingående objekten, noderna, har relationer till varandra. Relationerna, som anger grannar (och oftast har en riktning) kallas för bågar (eng. edges). Ett exempel på grafer är de tillståndsdiagram som vi arbetat med i kursen. Grafer är bra för att representera relationer mellan objekt.
  • 29. Träd Träd är, precis som grafer, datastrukturer där de ingående objekten, noderna, har relationer till varandra. Till skillnad från graferna har bågarna i ett träd alltid enbart en riktning, utgåendes från rotnoden. Varje gren i trädet är i sig ett träd. Träd kan, om de är sorterade, göra sökningar väldigt effektiva. Dessa trän kallas då för sökträd. Exempel: https://www.youtube.com/watch?v=5TQIOXHGKuM
  • 30. Associativa vektorer En associativ vektor (eng. Associative array eller Map) är en samling objekt, benämnda värden, där varje värde identifieras med en nyckel. I Python motsvaras detta av dictionary. Exempel: >>> cat = { ... "name": "Zorro", ... "age": 7 ... } >>> print(cat["name"]) Zorro
  • 31. Hashmaps Ett exempel på en associativ vektor är hashmap, där varje värde representeras av ett heltal, ungefär som i en vektor. Detta heltal är en hash, vilket innebär att det räknas ut baserat på egenskaperna hos det objekt det representerar. Den underliggande datastrukturen är ofta ett sökträd.
  • 32. Köer En kö (eng. Queue) är en sekventiellt ordnad datastruktur, i vilken insättningar och uttag sker i ordningen först in, först ut.
  • 33. Stackar En stack (eng. Stack) är precis som kön en sekventiellt ordnad datastruktur, men där insättningar och uttag sker enligt principen sist in, först ut. I Python finns denna funktionalitet inbakad direkt i listorna: >>> a = [1,2,4,8] >>> a.append(16) >>> print(a) [1, 2, 4, 8, 16] >>> a.pop() 16 >>> print(a) [1, 2, 4, 8]