Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.

Slides:



Advertisements
Liknande presentationer
Algoritmer och data strukturer -Länkade listor
Advertisements

#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack
C-programmering ID120V William Sandqvist Länkad lista
Föreläsning 11 Arrayer.
William Sandqvist Funktion som byter plats på två variabler /* swap1.c first attempt at a swaping function */ /* from Stephen Prata, C Primer.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 5 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning.
Next previous Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe.
Vektorer (klassen Vector) Sortering
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
William Sandqvist C:s minnesmodell.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Anders Sjögren Bitfält exempel Nu kommer ett förbättrat program. Det är funktions- uppdelat och kan lägga till poster som lagras på fil.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
Hud & hudsjukdomar Fredrik Hieronymus.
Behandlas under 4 kursträffar i mineralmuseet
Kap. 3 Derivator och Integraler
KONJUNKTURINSTITUTET
KPP053, HT2016 MATLAB, Föreläsning 2
Nordiska Lärarorganisationers Samråd
Lagen om Energikartläggning i stora företag
Information till primärvården Herman Nilsson-Ehle Catharina Lewerin
Lagen om Energikartläggning i stora företag
Dagens ämnen Matriser Räkneoperationer och räknelagar
det är den här processen
BILDSPEL ABISKO, ev. YOUTUBE KLIPP
Mid Sweden University develops and realizes opportunities
Marknadsutblick FEBruari 2017.
HUT-veckan 2016 (Hållbar utveckling).
Kapitel 1 Algebra och linjära modeller manada.se.
Länkade listor á la C/C++
Rapport till Örebro läns landsting om Medarbetarundersökning
Kap 1 Varför samhällsekonomi?
Kap 5 Arbetsmarknaden och arbetslösheten -Fig 5
Föreläsning 9 – Bipolära Transistorer II
Föreläsning 2 - Halvledare
Kapitel 1 Algebra och linjära modeller manada.se.
Dan Hedlin Statistiska institutionen, Stockholms universitet
Kurvor, derivator och integraler
Regionkommittén.
Årsrapporten 2019 Välkomna till UKÄ:s frukostseminarium! #årsrapport19.
Världs-om-spännande kunskapstävling!
Måluppfyllelse resultat - genrep Nässjö ( )
Integrated Project Delivery
Fler gör mer! Fler gör mer! Handlingsplan för minskat
Linjära religioner Abraham Judendom Isak/Ismael Jakob Moses Islam
Varmt välkommen!.
Grundläggande idrottsskadekurs
Moderna beredskapsjobb
för dig som rapporterar resultat
Välkommen! Kvällens upplägg Information om inventeringen
Hur vi arbetar för att nå ut med små medel
Statistiska undersökningar
Välkommen till Språkintroduktion på Alléskolan!
Miljömanagement - TKMJ15, 6 hp
Kap 1 - Algebra och funktioner
Presentationens avskrift:

Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter

Lista I en lista har varje element en position eller ett index Vi kan nå elementen i godtycklig ordning och sätta in eller ta bort element på godtycklig plats

Operationer på lista insert(element,index) -placerar element på plats position och flyttar alla element med en position ≥index en position upp remove(index) -tar bort och returnerar element på position index. Alla element med position>index flyttas ned ett steg inspect(index) returnerar (utan att ta bort) elementet på position = index size() returnerar antal element Oftast har man fler operationer (vi ger första platsen index 1 men även 0 förekommer)

Implementering av Lista Array +Effektivt och enkelt att hitta godtyckligt element via index - Vi måste flytta många element när vi ska sätta in respektive ta bort mitt i listan. Har en maxstorlek. Länkad lista +Effektivt att stoppa in och ta bort mitt i listan - Ineffektivt att hitta ett godtyckligt element. Ska vi gå igenom hela listan i ordning måste vi söka igenom listan för varje element! (detta löses normalt med en iterator)

Implementera med array Se boken

Lista implementerad med länkad lista Lista.c : #include #include #include "lista.h” typedef struct node node; node *first=NULL; int nrElements=0; struct node { element e; node *next; };… Lista.c : #include #include #include "lista.h” typedef struct node node; node *first=NULL; int nrElements=0; struct node { element e; node *next; };… Lista.h : typedef struct element element; struct element { char a[ordL]; }; void insert(element e, int index); element inspect(int index); int size(); element remov(int index); Lista.h : typedef struct element element; struct element { char a[ordL]; }; void insert(element e, int index); element inspect(int index); int size(); element remov(int index);

Lista implementerad med länkad lista Lista.c forts. : void insert(element e, int index) { node *newNode = (node *)malloc(sizeof(node)); newNode->e=e; if(first==NULL || index==1) { newNode->next=first; first=newNode; } else {… Lista.c forts. : void insert(element e, int index) { node *newNode = (node *)malloc(sizeof(node)); newNode->e=e; if(first==NULL || index==1) { newNode->next=first; first=newNode; } else {…

Lista implementerad med länkad lista Lista.c forts. : … node *node1 = first; node *node2 = first->next; while(node2!=NULL && index>2) { node1=node2; node2=node2->next; index--; } node1->next=newNode; newNode->next=node2; } nrElements++; }… Lista.c forts. : … node *node1 = first; node *node2 = first->next; while(node2!=NULL && index>2) { node1=node2; node2=node2->next; index--; } node1->next=newNode; newNode->next=node2; } nrElements++; }… index node1 node2 node1 node2

Lista implementerad med länkad lista Lista.c forts. : element inspect(int index) { node *node = first; while(node->next!=NULL && index>1) { node=node->next; index--; } return node->e; }… Lista.c forts. : element inspect(int index) { node *node = first; while(node->next!=NULL && index>1) { node=node->next; index--; } return node->e; }…

Lista implementerad med länkad lista Lista.c forts. : int size() { return nrElements; } … Lista.c forts. : int size() { return nrElements; } …

Lista implementerad med länkad lista Lista.c forts. : element remov(int index) { assert(0<index && index<=nrElements); if(index==1) { node *node1 = first; element e = first->e; first=first->next; free(node1); nrElements--; return e; } else {… Lista.c forts. : element remov(int index) { assert(0<index && index<=nrElements); if(index==1) { node *node1 = first; element e = first->e; first=first->next; free(node1); nrElements--; return e; } else {…

Inlämningsuppgifter Följande uppgifter redovisas senast onsdag den 30 januari och kan inte redovisas senare: 3A, 3B, 3C, 3D/3.1, 3.3 Dessa uppgifter bör göras nu för att ni ska kunna följa kursen på ett bra sätt. Övriga kan ni göra vid tillfälle för högre betyg.

Uppgifter ej i boken 3.A Skriv klart funktionen remov till Listan från föreläsningen. Skriv ett mainprogram som testar att listan fungerar som den ska. (2p) 3.B Skriv om listan så att storleken inte sparas i en variabel utan beräknas vid varje anrop till size(). (2p) 3.C Skriv om listan så att vi kan ha flera listor så som vi gjorde med stackarna. (3p) 3.D Implementera en lista med en array som lagrar heltal. Ta stöd av boken. Den ska ha samma operationer som vår lista implementerad med länkad lista. Skriv också ett mainprogram som testar den. Om du väljer att allokera arrayen dynamisk kan du ta med initierings- avslutningsoperationer också. (3p)