1 / 13

Föreläsning 3

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.

Télécharger la présentation

Föreläsning 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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)

  4. 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)

  5. Implementera med array Se boken

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

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

  8. 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++; }… index node2 node1 node2 node1

  9. 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--; } returnnode->e; }…

  10. Lista implementerad med länkad lista Lista.c forts.: intsize() { returnnrElements; } …

  11. 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 {…

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

  13. Uppgifter ej i boken 3.ASkriv klart funktionen removtill Listan från föreläsningen. Skriv ett mainprogram som testar att listan fungerar som den ska.(2p) 3.BSkriv om listan så att storleken inte sparas i en variabel utan beräknas vid varje anrop till size(). (2p) 3.CSkriv om listan så att vi kan ha flera listor så som vi gjorde med stackarna. (3p) 3.DImplementera 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)

More Related