O listă dinamică, punerea în aplicare și aplicarea c
1. Introducere
Foarte adesea, atunci când în curs de dezvoltare aplicații care operează pe un număr mare de date de intrare, se pune întrebarea cu privire la depozitarea lor în timpul execuției programului. Plumb toate acestea, nu are nici un sens, mă voi concentra doar pe tablouri. Fără îndoială, acest tip de stocare rezolvă problema, dar este evident că nu este lipsit de dezavantaje. Șef printre ei, desigur, este o dimensiune fixă. Această proprietate nu poate fi modificat chiar și matrice create dinamic care de multe ori face ca programatorii care le utilizează în mod exclusiv, pentru a aloca memorie „cu un stoc“. Ei bine, în primul rând, chiar și „rezervă“ este limitată, și nimeni nu poate da garanții că va fi suficient, și în al doilea rând, dimpotrivă, „stoc“ poate fi suficientă, astfel încât o parte considerabilă a memoriei de program alocat va fi ocupat în mod inutil.
2. Situația problemei
Pentru a demonstra punerea în aplicare a lucrărilor cu o listă dinamică, rezolva problema:
„Fișierul text sunt identificatori variabile și valorile lor numerice (de exemplu: x 15 ABC 12.098 z -1.23) Transfer-le în lista dinamică pentru care pune în aplicare următoarele operațiuni: identificator de căutare în listă, modificarea valorii respectivului element de identificare, scoaterea identificatorul din listă. adăugarea la lista de un nou identificator cu o valoare predeterminată. După sesiunea o listă de identificatori și valorile lor transferate înapoi la dosar "
Provocarea ne va permite să învețe cum să pună în aplicare toate operațiunile de bază ale unei liste dinamice - a crea o listă, adăugarea și eliminarea componentelor lista (noduri), căutați o listă a componentelor. Pentru a rezolva nevoia de cunoștințe despre fișierul IO, indicii, și tipuri de date structurate. Eu nu va crea nici o coajă pentru această problemă, deși ar fi util, deoarece există o serie de posibile operațiuni. Cu toate acestea, acest lucru nu este scopul meu principal în acest articol. Sunt doar realizarea tuturor operațiunilor în funcții și probe individuale, se referă la ele la timp.
3. decizie
3.1. standard Start
Vom trece la o decizie. Crearea unui proiect de consolă, și scrie un cod destul de standard - organizarea de intrare fișier. Pentru a citi dintr-un fișier folosind metoda getline (), în cazul în care ca al treilea parametru specifică diferența, care este separatorul în fișierul nostru.
Se pare că totul este clar și nu necesită o atenție specială. vom descrie tipurile solicitate în prima secțiune a listei TODO de a lucra cu, în al doilea vom avea caracteristici pentru a lucra cu el. Noi acum trece direct la descrierea listei, deoarece programul am ajuns aproape de umplându-l.
3.2. Descriere Lista dinamică
Pentru început, să ne amintim (sau să învețe mai întâi)) astfel încât o listă dinamică este o anumită cantitate de componente (noduri) care cuprinde în mod direct partea de informații (un număr, șir de caractere, sau tipurile de date mai complexe), precum și un link către componenta următoare (probabil nod 2 cuprinde referiri la alta și cea precedentă, în acest caz, lista este numit de două ori conectat). Astfel, avem următoarea structură care descrie lista de componente pentru problema noastră:
Este ușor de înțeles ce înseamnă a crea o listă goală. De fapt, nu aveți nevoie de nimic, cu excepția faptului că referința pentru a atribui primul element (cap) valoarea este NULL. Pentru a-l elibereze în funcție, în paralel, pentru a crea un alt care verifică această condiție, în cazul în care lista este goală.
Vedem că totul este simplu. Desigur, tipul care descrie lista ar putea fi emisă ca o clasă, și funcționează pentru a crea pentru a face constructorul clasei, dar voi lăsa să-ți ca temă de casă. Acum, în funcția principală (), o variabilă de tip dyn_list și de a crea o listă goală. Apoi, du-te la pasul următor.
3.3 Operațiuni cu lista de componente
Având în vedere că operațiunea este de peste, acum este necesar pentru a termina programul.
3.4. Testarea caracteristici și finalizarea programului
Ei bine, totul este simplu, într-un ciclu ne putem referi doar la funcția de a adăuga o componentă pe listă. După ciclul, restul funcțiilor noastre de testare și a afișa întreaga listă în fișierul. Funcția principală () Aici este întregul cod aici
În ciuda faptului că cineva ar putea părea descurajantă de a lucra cu o listă dinamică, realitatea nu este doar destul de simplu, dar încă mai confortabil - componentele sunt create și șterse dinamic, dimensiunea listei este limitată doar de memoria disponibilă, după ce componentele nu mai sunt este utilizat, memoria poate fi eliberat imediat pentru alte noduri.