Acasă Finanțe personale Cum se creează o listă conectată în programarea C - dummies

Cum se creează o listă conectată în programarea C - dummies

Video: CANCER DE COLON ( cancer colorectal ). CUM SE FACE TESTUL hemocult care îl depistează 2024

Video: CANCER DE COLON ( cancer colorectal ). CUM SE FACE TESTUL hemocult care îl depistează 2024
Anonim

În programarea C, dacă doriți să adăugați oa doua structură codului pe care l-ați creat deja, creați o listă legată - o serie de structuri care conțin indicii între ei. Împreună cu datele de bază dintr-o structură, structura conține un pointer, care conține adresa următoarei structuri din listă.

Cu o anumită jonglare inteligentă a numelor de indicatori, plus un NULL pentru a acoperi sfârșitul listei, s-ar putea să ajungeți la ceva asemănător cu codul sursă în Exemplu de listă legată de Primitivă.

EXEMPLU PRIMITIVĂ LISTATĂ

#include #include #include int principal () {struct stoc {simbol char [5]; cantitate int; prețul flotant; struct stoc * următor;}; struct stoc * în primul rând; stoc stoc * curent; struct stoc * nou; / * Crearea structurii în memorie * / first = (struct stock *) malloc (sizeof (stoc stoc)); dacă (prima == NULL) {pune ("Un fel de eroare malloc ()"); ieșire (1);} / * Atribuiți datele de structură * / current = first; strcpy (actual-> simbol, "GOOG"); a curentului> cantitate = 100; a curentului> pret = 801. 19; a curentului> următor = NULL; nou = (struct stoc *) malloc (sizeof (stoc stoc)); dacă (new == NULL) {puts ("O altă eroare malloc ()"); ieșire (1);} current-> next = new; curent = nou; strcpy (curent-> simbol, "MSFT"); a curentului> cantitate = 100; a curentului> pret = 28. 77; a curentului> următor = NULL; / * Afișare bază de date * / pune ("Portofoliu de investiții"); printf ("SymboltSharestPricetValuen"); = Curent primul; printf ("% - 6st% 5dt% 2ft% 2fn", curent-> simbol, curent-> cantitate, curent-> pret, curent-> cantitate * curent-> pret); curent = a curentului> următor; printf ("% - 6st% 5dt% 2ft% 2fn", curent-> simbol, curent-> cantitate, curent-> pret, curent-> cantitate * curent-> pret); retur (0);}

Acest cod sursă este destul de lung, dar creează pur și simplu oa doua structură, legată de prima. Nu lăsați lungimea codului sursă să vă intimideze.

Liniile 13 până la 15 declară standardii trei indicatori de structură care sunt necesari pentru un dans al listei legate. În mod tradițional, ele sunt numite primele, actuale și noi. Ei joacă în cel de-al patrulea membru din structură, următor, găsit la linia 11, care este un indicator al structurii.

Nu utilizați typedef pentru a defini o nouă variabilă de structură atunci când creați o listă legată. Un Exemplu Primitiv Linked List nu utilizează typedef, deci nu este o problemă cu codul, dar mulți programatori C folosesc typedef cu structuri. Ai grija!

Numele variabilei noi, folosit în Linia 15, este un cuvânt rezervat în C ++, deci dacă doriți să fiți bilingv, schimbați numele variabilei în new_struct sau altceva decât cuvântul nou.

Când prima structură este umplută, Linia 30 atribuie un indicator NULL elementului următor.Valoarea NULL capă sfârșitul listei legate.

Linia 32 creează o structură, plasându-și adresa în noua variabilă a indicatorului. Adresa este salvată în prima structură din Linia 38. Astfel se păstrează locația celei de-a doua structuri.

Liniile 40 până la 43 completează informațiile pentru al doilea pointer, atribuind o valoare NULL elementului următor la Linia 43.

Legătura are loc când conținutul structurilor este afișat. Linia 48 capturează adresa primei structuri. Apoi linia 54 captează adresa următoarei structuri din cadrul primei structuri.

Exercițiul 1 : Introduceți codul sursă din Exemplu de listă legată primitivă în editorul dvs. Chiar dacă este lung, tastați-l pentru că va trebui să îl editați din nou mai târziu (dacă nu sunteți obișnuit cu asta până acum). Construiți și alergați.

Spre deosebire de rețele, structurile dintr-o listă asociată nu sunt numerotate. În schimb, fiecare structură este legată de structura următoare din listă. Atâta timp cât cunoașteți adresa primei structuri, puteți lucra în listă până la final, care este marcat de un NULL.

Un exemplu de listă legată primitivă arată un cod sursă nefolositor cu multe coduri repetate. Când vedeți mai multe declarații de genul acesta în codul dvs., trebuie să vă gândiți imediat la "funcții". "

O EXEMPLU EXEMPLU DE LINK-URI

#include #include #include #define ITEMS 5 struct stoc {char symbol [5]; cantitate int; prețul flotant; struct stoc * următor;}; struct stoc * în primul rând; stoc stoc * curent; struct stoc * nou; struct stoc * make_structure (void); void fill_structure (struct stoc * a, int c); void show_structure (struct stoc * a); int principal () {int x; pentru (x = 0; xnext = new; current = new;} fill_structure (curent, x + 1);} current-> next = NULL; / * displayf ()), curent = primul, în timp ce (curent) {show_structure (curent); current = current-> next;} return (0)) malloc (sizeof (stoc stoc)); if (a == NULL) {puts ("Un fel de eroare malloc ()";, int c) {printf ("Element #% d /% d: n", c, ITEMS); printf (" (% d), & a-> price); void show_structure (stoc stoc * a); scanf (" {printf ("% - 6st% 5dt% 2ft% 2fn", a-> simbol, a-> cantitate, a-> preț, a-> cantitate * a-> preț); sunt create așa cum se arată într-un exemplu de listă mai bine legat. Cheia este de a utiliza trei variabile de structură, prezentate în liniile 13 până la 15:

mai întâi conține întotdeauna adresa a primei structuri din listă. Mereu.

  • curentul conține adresa structurii pe care se lucrează, se completează cu date sau se afișează.

  • nou este adresa unei noi structuri create folosind funcția malloc ().

  • Linia 7 declară structura stocului ca globală. În acest fel, acesta poate fi accesat din diferite funcții.

Buclele pentru liniile 25 și 39 creează structuri noi, leagă-le împreună.Structura inițială este specială, astfel încât adresa sa este salvată în Linia 30. În caz contrar, este alocată o nouă structură datorită funcției make_structure ().

În rândul 35, structura anterioară este actualizată; valoarea curentului nu se modifică până la linia 36. Înainte de aceasta, indicatorul din structura actuală este actualizat cu adresa următoarei structuri, nou.

La linia 40, sfârșitul listei legate este marcat prin resetarea noului pointer din ultima structură la un NULL.

Buclele de timp de la Linia 46 afișează toate structurile din lista conectată. Starea buclă este valoarea cursorului curent. Când se întâlnește NULL, bucla se oprește.

Restul codului prezentat într-un exemplu de listă legată mai bine constă din funcții destul de explicative.

Exercițiul 2

: Copiați codul dintr-un exemplu de listă legată mai bine în editor. Construiți și alergați. Luați notă de instrucțiunile scanf () din funcția fill_structure (). Rețineți că -> este notația "peeker" pentru un pointer. Pentru a obține adresa, trebuie să prefixați variabila cu o funcție & în funcția scanf ().

Cum se creează o listă conectată în programarea C - dummies

Alegerea editorilor

Administrator de rețea: Zone de căutare inversă - dummies

Administrator de rețea: Zone de căutare inversă - dummies

Interogări DNS obișnuite sunt interogări de căutare înainte corespunde unui nume de domeniu complet calificat. O căutare inversă este opusul unei căutări forward: returnează numele de domeniu complet calificat al unei gazde pe baza adresei sale IP. Căutările inverse sunt posibile din cauza unui domeniu special numit ...

Rețea Elemente de bază: Clienți și servere - manechine

Rețea Elemente de bază: Clienți și servere - manechine

Computerul de rețea care conține hard disk-urile, imprimantele și alte resurse care sunt partajate cu alte calculatoare de rețea se numește un server. Acest termen vine în repetate rânduri, deci trebuie să-l amintiți. Scrie-o pe spatele mâinii tale stângi. Orice computer care nu este un server este numit client. Aveți ...

Retea Bazele: Poduri - dummies

Retea Bazele: Poduri - dummies

O punte este un dispozitiv care conecteaza doua retele astfel incat sa actioneze ca si cum ar fi o rețea. Podurile sunt utilizate pentru a împărți o rețea mare în două rețele mai mici din motive de performanță. Vă puteți gândi la un pod ca pe un repetor inteligent. Repetoarele ascultă semnale care coboară pe un cablu de rețea, amplifică ...

Alegerea editorilor

ÎMprumuta și tweak idei de la alte comunități online - dummies

ÎMprumuta și tweak idei de la alte comunități online - dummies

, Mai degrabă decât să ia ideile altcuiva complet pentru dvs. comunitate online, încercați să riffați pe aceeași idee, dar nu atât de mult încât este evident că nu sunteți creierul din spatele brainstorming-ului. Idei sunt acolo pentru a lua, dar nu ar fi mai degrabă văzute ca cineva inovatoare, nu cineva care scours pe web ...

Branding Blogul tău

Branding Blogul tău

Branding blog-ul tău merge mult spre a face dacă este ușor de recunoscut pentru cititorii tăi. Când vedeți un punct roșu în interiorul unui cerc roșu, ce magazin vine în minte? Ce zici de acele arcuri de aur? Un nume de marcă apare în minte atunci când vedeți simbolul swoosh? La fel ca magazinele populare, restaurantele și încălțămintea ...

Construiți un Blog Mama care este Sellable - dummies

Construiți un Blog Mama care este Sellable - dummies

Dacă obiectivul pe termen lung este de a vinde blogul dvs. ar trebui să o construiască cu acest scop în minte. Evitați asocierea prea intensă a blogului cu marca dvs. personală. Un blog care poate fi valoros cu orice scriitor la cârma trebuie să îndeplinească majoritatea, dacă nu toate, următoarele criterii: Blogul este concentrat ...

Alegerea editorilor

Cum să creați o nouă campanie de anunțuri LinkedIn - dummies

Cum să creați o nouă campanie de anunțuri LinkedIn - dummies

LinkedIn oferă servicii de publicitate pentru afacerea dvs. Dacă vă decideți să utilizați LinkedIn ca instrument de marketing, va trebui doar să obțineți o nouă campanie de anunțuri în lucrări. Când sunteți gata să începeți o nouă campanie, urmați acești pași:

Opțiuni de filtrare pentru anunțul dvs. LinkedIn - manechine

Opțiuni de filtrare pentru anunțul dvs. LinkedIn - manechine

Ce opțiuni de filtrare aveți pentru anunțul dvs. LinkedIn? Alte rețele de publicitate vă permit să filtrați publicul vizat de câteva atribute cunoscute ale persoanei care vă va vedea anunțul, sexul și locația membrilor din public. LinkedIn vă permite să faceți un pas mai departe permițându-vă ...

Oferind și primind viziuni pe LinkedIn - manechine

Oferind și primind viziuni pe LinkedIn - manechine

Deși mulți oameni cred că "Nu este ceea ce știi, știi, "care este unul dintre principalele motive pentru care LinkedIn este atât de valoros, mulți oameni (recrutorii, angajații, directorii executivi, investitorii și altele) sunt foarte interesați de ceea ce știi. În mod logic, oamenii care vă cunosc cel mai bine sunt oamenii din rețeaua dvs., care ...