Hjem Personlig finansiering Sådan oprettes en tilknyttet liste i C Programmering - dummier

Sådan oprettes en tilknyttet liste i C Programmering - dummier

Video: Writing 2D Games in C using SDL by Thomas Lively 2025

Video: Writing 2D Games in C using SDL by Thomas Lively 2025
Anonim

I C-programmering, hvis du vil tilføje en anden struktur til kode, du allerede har oprettet, skal du oprette en linket liste - en række strukturer, der indeholder peger til hinanden. Sammen med de grundlæggende data i en struktur indeholder strukturen en peger, som indeholder adressen til den næste struktur på listen.

Med nogle kloge jonglering af pegernavne plus en NULL for at hænge slutningen af ​​listen, kan du ende med noget, der ligner kildekoden i et primært sammenkædningseksempel.

En PRIMITIV LINKED-LIST EKSEMPEL

#include #include #include int main () {struct lager {char symbol [5]; int mængde; float pris; struct lager * næste;}; struct lager * først; struct lager * nuværende; struct lager * nyt; / * Opret struktur i hukommelsen * / first = (struct lager *) malloc (sizeof (struct lager)); hvis (først == NULL) {sætter ("Nogle slags malloc () fejl"); exit (1);} / * Tildel strukturdata * / nuværende = første; strcpy (nuværende-> symbol, "GOOG"); strøm-> mængde = 100; strøm-> pris = 801. 19; strøm-> next = NULL; new = (struct lager *) malloc (sizeof (struct lager)); hvis (nyt == NULL) {sætter ("En anden malloc () fejl"); exit (1);} nuværende-> næste = nyt; nuværende = ny; strcpy (nuværende-> symbol, "MSFT"); strøm-> mængde = 100; strøm-> pris = 28. 77; strøm-> next = NULL; / * Display database * / puts ("Investment Portfolio"); printf ("SymboltSharestPricetValuen"); nuværende = først; printf ("% - 6st% 5dt%. 2ft%. 2fn", nuværende-> symbol, nuværende-> mængde, nuværende-> pris, nuværende-> mængde * nuværende-> pris); nuværende = strøm-> næste; printf ("% - 6st% 5dt%. 2ft%. 2fn", nuværende-> symbol, nuværende-> mængde, nuværende-> pris, nuværende-> mængde * nuværende-> pris); returnere (0);}

Denne kildekode er temmelig lang, men det skaber simpelthen en anden struktur, der er knyttet til den første. Lad ikke kildekoden længde skræmme dig.

Linjer 13 til 15 erklærer de tre standardstrukturer, der er nødvendige for en danseliste. Traditionelt hedder de først, nuværende og nyt. De spiller ind i det fjerde medlem i strukturen, næste, fundet på linje 11, som er en strukturpeger.

Brug ikke typedef til at definere en ny strukturvariabel, når du opretter en linket liste. En primitiv sammenkoblingseksempel bruger ikke typedef, så det er ikke et problem med koden, men mange C-programmører bruger typedef med strukturer. Vær forsigtig!

Variabelnavnet nyt, der anvendes i Linje 15, er et reserveret ord i C ++, så hvis du vil være tosprogede, skal du ændre variablenavnet til new_struct eller til noget andet end ordet nyt.

Når den første struktur er fyldt, tildeler Line 30 en NULL-peger til det næste element.Den NULL-værdi dækker slutningen af ​​den linkede liste.

Linje 32 opretter en struktur, der placerer sin adresse i den nye pegervariabel. Adressen gemmes i den første struktur i Linje 38. Sådan bevares placeringen af ​​den anden struktur.

Linjer 40 til 43 udfyld oplysninger for den anden peger og tildeler en NULL-værdi til det næste element på linje 43.

Linkingen finder sted, når strukturenes indhold vises. Linje 48 fanger den første strukturadresse. Så fanger Line 54 den næste strukturens adresse fra den første struktur.

Øvelse 1 : Indtast kildekode fra et primitivt linket eksempel til din editor. Selvom det er længe, ​​skriv det ind, fordi du skal redigere det igen senere (hvis du ikke er vant til det nu). Byg og kør.

I modsætning til arrays er strukturer i en tilknyttet liste ikke nummereret. I stedet er hver struktur knyttet til den næste struktur på listen. Så længe du kender adressen til den første struktur, kan du arbejde gennem listen indtil slutningen, som er markeret med en NULL.

En primitiv sammenkoblingseksempel viser noget sløv kildekode med mange gentagne kode. Når du ser flere udsagn som dette i din kode, skal du straks tænke på "funktioner". "

EN BEDRE LINKED-LIST EKSEMPEL

#include #include #include #define ITEMS 5 struct lager {char symbol [5]; int mængde; float pris; struct lager * næste;}; struct lager * først; struct lager * nuværende; struct lager * nyt; struct lager * make_structure (void); void fill_structure (struct lager * a, int c); void show_structure (struct lager * a); int main () {int x; for (x = 0; xnext = nyt; nuværende = nyt;} fill_structure (nuværende, x + 1);} nuværende-> næste = NULL; / * Visningsdatabase * / sætter ("investeringsportefølje"); printf ("SymboltSharestPricetValuen "); nuværende = første; mens (nuværende) {show_structure (nuværende); nuværende = nuværende-> næste;} returnere (0);} struct lager * make_structure (void) {struct lager * a; a =) malloc (sizeof (struct lager)); hvis (a == NULL) {sætter ("Nogle slags malloc () fejl"); exit (1);} returnere (a);} void fill_structure, int c) {printf ("Item #% d /% d: n", c, ITEMS); printf ("Stock Symbol:"); scanf ("% s", a-> symbol); printf af aktier: "); scanf ("% d ", & a-> mængde); printf (" Aktiekurs: "); scanf ("% f ", & a-> pris);} void show_structure {printf ("% - 6st% 5dt%. 2ft%. 2fn", a-> symbol, a-> mængde, a-> pris, a-> mængde * a-> pris);}

Mest forbundne lister er oprettet som vist i et eksempel på bedre sammenkobling. Nøglen er at bruge tre strukturvariabler, vist i linjerne 13 til 15:

  • første indeholder altid adressen af den første struktur på listen. Altid.

  • Nuværende indeholder adressen på den struktur, der arbejdes på, fyldt med data eller vises.

  • Ny er adressen til en ny struktur oprettet ved hjælp af malloc () -funktionen.

Linje 7 erklærer lagerstrukturen som global. På den måde kan man få adgang til de forskellige funktioner.

Forløbet mellem Linjer 25 og 39 skaber nye strukturer, der forbinder dem sammen.Den oprindelige struktur er speciel, så adressen gemmes i linje 30. Ellers tildeles en ny struktur takket være make_structure () -funktionen.

I linje 35 opdateres den tidligere struktur; værdien af ​​strøm ændres ikke til linje 36. Før det sker, opdateres markøren i den aktuelle struktur med adressen til den næste struktur, ny.

I linje 40 markeres slutningen af ​​den linkede liste ved at nulstille den nye peger i den sidste struktur til en NULL.

Mens sløjfen på linje 46 viser alle strukturer i den linkede liste. Sløjfens tilstand er værdien af ​​den aktuelle peger. Når NULL er stødt, stopper sløjfen.

Resten af ​​koden vist i en bedre sammenkædningseksempel består af funktioner, der er ret selvforklarende.

Øvelse 2 : Kopiér koden fra en bedre sammenkædningseksempel til editoren. Byg og kør.

Noter scanf () -sagnerne i funktionen fill_structure (). Husk at -> er "peeker" notationen til en peger. For at få adressen skal du prefix variablen med en & i scanf () funktionen.

Sådan oprettes en tilknyttet liste i C Programmering - dummier

Valg af editor

Microsoft Project 2010 Genvejstaster - dummies

Microsoft Project 2010 Genvejstaster - dummies

Microsoft Project 2010 maksimerer effektiviteten, når du administrerer projekter - men også genvejstaster i Project 2010 din tid på tastaturet: Her er nogle genvejstaster, du vil bruge hele tiden, når du bygger og arbejder med en projektplan. Indtastning af tastetryk Indsæt Indsætter ny opgave Ctrl + K Indsætter hyperlink F7 Starter stavekontrol Alt + F10 Tildeler ressourcer ...

Hvordan man ændrer gridlines i Project 2016 - dummies

Hvordan man ændrer gridlines i Project 2016 - dummies

Flere visninger i Project 2016 inkluderer gridlines for at angive visse elementer, f.eks. en pause mellem uger eller status dato (det vil sige den dato, hvor der er sporet fremskridt på et projekt). Disse linjer hjælper en person med at læse planen for at skelne mellem tidsintervaller eller brud på information; For eksempel kan netlinjer være ...

Projekt 2016 AutoFilter-funktion - dummier

Projekt 2016 AutoFilter-funktion - dummier

Projekt 2016 AutoFilter-funktionen er som standard tændt for alle nye tidsplanfiler. Pile vises i kolonneoverskrifterne i det viste ark. Når du klikker på pilen i kolonnen Ressourcenavne, er navnet på hver ressource, der er tildelt opgaver i projektet, angivet i alfabetisk rækkefølge sammen med ...

Valg af editor

Netværksadministration: Windows Command Omdirigering og piping - dummies

Netværksadministration: Windows Command Omdirigering og piping - dummies

Omdirigering og piping af Windows-kommandoer er relaterede teknikker. Omdirigering giver dig mulighed for at angive en alternativ destination for output, der vil blive vist med en kommando eller en alternativ kilde til input, der skal indtastes i en kommando. Du kan f.eks. Gemme resultaterne af en kommando ipconfig / all til en fil ved navn myconfig. txt ...

Netværksadministration: VPN Security - dummies

Netværksadministration: VPN Security - dummies

Udtrykket tunnel er nogle gange brugt til at beskrive en VPN, fordi VPN'en skaber en sikker tunnel mellem to steder, som kun kan indtastes fra begge ender. De data, der bevæger sig gennem tunnelen fra den ene ende til den anden, er sikre, så længe det er inden for tunnelen - det vil sige inden for ...

Netværksadministration: Windows Miljøvariabler - dummies

Netværksadministration: Windows Miljøvariabler - dummies

Windows-kommandoskallen giver flere miljøvariabler til kommandoer. Miljøvariabler begynder og slutter med procent tegn. Du kan bruge en miljøvariabel overalt i en kommando. For eksempel viser C:> echo% OS%, der kører på% PROCESSOR_IDENTIFIER% en linje som denne: Windows_NT kører på en x86 Familie 15 Model 2 Stepping 8, ...

Valg af editor

Sådan bruger du arv i PHP med objektorienteret programmering - dummier

Sådan bruger du arv i PHP med objektorienteret programmering - dummier

Objektorienteret programmering i PHP har en anden funktion, der gør det meget nyttigt til store projekter. Mange objekter er relateret til hinanden, og du kan bruge et familietræforhold til at forenkle din programmering. Hvordan man bygger en critter baseret på en anden critter Der er en ny critter i byen. Denne har den samme grundlæggende ...

Sådan bruges PHP til at lave en switch til HTML5 og CSS3 Programmering - dummies

Sådan bruges PHP til at lave en switch til HTML5 og CSS3 Programmering - dummies

Du kører ofte over en situation i HTML5 og CSS3 programmering, hvor du har et udtryk, der kan have mange mulige værdier. Du kan altid bruge strukturen til at klare denne situation, men PHP leverer en anden interessant mulighed. Koden til dette program anvender omskifterstrukturen. Tag et kig på, hvordan det er gjort: