Structuri de date și algoritmi C ++

Structuri de date și algoritmi C ++ - înseamnă aranjarea sau organizarea elementelor într-un mod anume. Când spunem că trebuie să aranjăm elemente, aceste elemente pot fi organizate sub diferite forme. De exemplu, șosetele pot fi aranjate în diferite moduri diferite. Puteți să-l țineți pur și simplu în dulapul dvs. încurcat. Sau îl puteți păstra perfect pliat. Cel mai bun mod poate fi plierea și aranjarea acestora în mod corect. Deci pentru căutarea unei anumite perechi de șosete, al treilea aranjament este perfect.

Într-un mod similar de organizare a șosetelor, Datele pot fi, de asemenea, organizate în diferite moduri sau forme. Aceste moduri diferite de organizare a datelor sunt numite structură de date. Să vedem o definiție formală a unei structuri de date și elementele de bază ale structurilor și algoritmilor de date.

Structuri de date și algoritmi C ++:

Modelul logic sau matematic al unei anumite organizații de date.

SAU

Este un mod particular de organizare a datelor într-un computer, astfel încât acestea să poată fi utilizate.

În mod similar la șosete; organizarea diferită a structurilor de date și a algoritmilor C ++ disponibili este -

  1. mulțime
  2. Lista legată
  3. Grămadă
  4. Coadă
  5. Copac
  6. Grafic
  7. Masa cu Hash
  8. Morman
  9. Înregistrări
  10. Mese

Aceste structuri de date și algoritmi C ++ sunt foarte importante în timpul programării. Un programator bun pune întotdeauna accent pe structura datelor și nu pe cod. Fiecare limbaj de programare lucrează pe diverse structuri de date și algoritmi în C ++. Structurile de date disponibile în C ++ sunt următoarele.

  1. mulțime
  2. Lista legată
  3. Grămadă
  4. Coadă
  5. Copac
  6. Grafic
  7. Masa cu Hash
  8. Morman

Să discutăm unul câte unul:

# 1 Array

Array este un tip simplu de structuri de date și algoritmi C ++. Matricea este definită ca o colecție secvențială de dimensiuni fixe de elemente de același tip de date. De exemplu a0 = 12, a1 = 21, a2 = 14, a3 = 15 … Putem reprezenta un tablou unidimensional așa cum se arată în figura:

Unde

0, 1, 2, 3… ..n se numește subscript sau index

a (1), a (2), … a (n) se numește variabilă de abonament

Poate fi 1-Dimensional, 2-Dimensional, 3-Dimensional și așa mai departe multidimensionale.

În tabloul de memorie se stochează în locații de memorie contigua.

Cea mai mică adresă corespunde primului element

Cea mai mare adresă corespunde ultimului element

Putem declara matricea 1-D (1-dimensională) în C ++ după cum urmează

dataType arrayName (arraySize);

De exemplu, int num (5);

Inițializarea Array în C ++

num = (23, 10, 12, 3, 6);

Putem combina declarația și inițializarea într-o singură declarație după cum urmează.

int num = (23, 10, 12, 3, 6);

Când dorim să alocăm dinamic dimensiunea unui tablou, ar trebui să facem un operator nou după cum urmează

int * a = int nou (dimensiune);

Dezavantajul tabloului este introducerea și ștergerea elementelor este lentă ca în tabloul ordonat și stocarea dimensiunii sale fixe.

Lista 2 legată

Lista se referă la o colecție liniară de articole. O listă legată este o serie de noduri conectate (element de date) așa cum se arată în figura 3. nodul antet indică primul nod al listei și ultimul nod indică NULL indicat deÆ. Deoarece fiecare nod conține cel puțin.

  1. O bucată de date (de orice tip)
  2. Pointer către următorul nod din listă

Lista legată este reprezentată în memorie folosind două tablouri. Un tablou stochează informațiile numite informații care sunt date care trebuie stocate, iar alte magazii câmpul indicator următor numit LINK care este o adresă a următorului nod.

Un avantaj al unei liste conectate peste un tablou:

Atât un tablou, cât și o listă legată sunt reprezentări ale unei liste de elemente din memorie. Diferența importantă este modul în care articolele sunt legate între ele. Limitarea principală a tabloului este introducerea elementelor în tablou și ștergerea elementelor din tabloul ordonat sunt dificile, deoarece elementele de repaus trebuie mutate. Introducerea și ștergerea elementelor dintr-o listă legată sunt foarte simple.

Notă: Deveniți dezvoltator C ++
Aflați să proiectați și să personalizați programe pentru diverse platforme. Codează, testează, depanează și implementează aplicații software. Dezvoltați abilități pentru a vă asigura că aplicațiile funcționează fără probleme.

Tipurile de liste conexe sunt:

1. Lista cu linkuri singure: conține un singur câmp legat care deține adresa nodului următor din listă și informațiile depuse care conțin informațiile care trebuie stocate.

2. Lista circulară unică circulară este o listă unică, dar ultimul nod al listei conține adresa primului nod în loc de nul. Adică conținutul capului și câmpul următor al ultimului nod sunt aceleași.

3. Lista dublu legată conține două câmpuri legate anterior și următorul. Un câmp legat anterior care deține o adresă a nodului anterior din listă și următorul câmp legat conține adresa următorului nod din listă și informațiile depuse dețin informațiile pentru a fi un magazin.

4. Lista circulară dublă circulară este o listă dublă legată, dar câmpul următor al ultimului nod conține adresa primului nod în loc de nul.

Cursuri recomandate

  • Curs pe VB.NET
  • Instruire în programarea științei datelor
  • Curs online ISTQB
  • Kali Linux Curs de formare

Implementarea listei legate în C ++ implică crearea de noduri, ștergerea unui nod din listă, introducerea unui nod nou creat în listă și căutarea unui nod cu o anumită cheie.

Codul pentru crearea nodului este dat după cum urmează:

Inserarea unui nod în listă implică trei cazuri

1. Introducerea unui nod la început înseamnă introducerea nodului nou creat ca nod de pornire. Pentru introducerea unui nod la început, mai întâi au creat un nou nod și faceți din nou nodul la începutul vechi, apoi actualizați începe să puncteze un nod nou, așa cum se arată în figura de mai jos:

Cod pentru introducerea unui nod la început:

2. Introducerea unui nod la coadă înseamnă inserarea nodului nou creat ca ultim nod. Pentru a insera nodul ca nod de coadă trebuie să creezi un nou nod și să faci ca ultimul nod să se îndrepte către noul nod și apoi să actualizeze coada pentru a indica un nou nod.

3. Introducerea unui nod într-o anumită poziție implică crearea unui nou nod temp, Apoi trebuie să găsești poziția de inserare a nodului nou creat.

Cod pentru inserarea nodului într-o poziție dată:

Ștergerea unui nod din listă implică eliminarea unui nod din lista existentă. Ștergerea nodului din lista de link-uri este simplă decât introducerea unui nod în listă. În codul C ++, pentru ștergerea nodului este prezentat după cum urmează:

Traversarea unui nod cu o anumită cheie (valoare) dintr-o listă va căuta un nod din lista a cărui informație se va potrivi cu cheia unui nod dat. Următorul cod C ++ va traversa o listă. structuri de date și algoritmi C ++

Pila # 3

Un stivă este o listă de elemente în care un element poate fi introdus sau șters doar la un capăt, numit partea superioară a stivei. Luați în considerare exemplul unui turn din Hanoi. Aici, atunci când trebuie să introducem un disc, trebuie să-l introducem din partea superioară și, în mod similar, eliminarea discului are loc numai de sus.

Stack folosește principiul LIFO înseamnă că funcționează în ordinea Last in First Out. Acesta este ultimul element adăugat la stivă este primul element de eliminare. Deci, există patru operații de bază care pot fi efectuate pe stivă:

  • Isempty: Această operație vede dacă stiva este goală.
  • Push : Această operație adaugă un nou element la stivă.
  • Pop: Această operație elimină un element din stiva adăugat cel mai recent.
  • Sus: Această operație returnează elementul care a fost adăugat la stivă cel mai recent.

Figura următoare este un exemplu de stivă în care inserția în stivă și eliminarea dintr-o stivă a articolului are loc din partea de sus a stivei și nicăieri altundeva.

Depășirea stivei

Condiția rezultată din încercarea de a împinge un element pe o stivă completă.

Pila sub flux

Starea rezultată din încercarea de a deschide o stivă goală.

Aici am arătat câteva operații push și pop pe stivă. Să presupunem că inițial stiva este goală, apoi am adăugat F, A, M, R, N. Apoi pop de două ori și apăsați N, H, B, T, K, O, P.

Implementarea Stack:

Poate fi implementat folosind ambele un tablou sau o listă legată.

Următorul cod dat prezintă modul în care stiva este implementată în C ++ folosind Class. Aici s-au definit o clasă numită stivă în care s-a creat un tablou numit un stick cu dimensiuni dinamice și două funcții principale push și pop.

Overflow Stack: Când top> = size-1

Stocul sub flux: Când se află <<0

Articole similare:-

Iată câteva articole care au legătură cu structurile și algoritmii de date C ++, care vă vor ajuta să obțineți mai multe detalii despre algoritmii C ++ și structurile de date și algoritmii atât de amabil să parcurgeți linkul care este prezentat mai jos. dacă vă plac structurile de date și algoritmii C ++ articol, atunci dați-ne comentariul dvs. valoros.

  1. Fișă de înșelare pentru limbajul de programare C ++
  2. Linux vs Ubuntu
  3. Întrebări de interviu C ++ pe care trebuie să le știi
  4. Structuri de date și algoritmi Întrebări de interviu | Cel mai util
  5. Cel mai bun articol pentru algoritmi și criptografie (exemple)
  6. 8 întrebări și răspunsuri la interviu de algoritm minunat
  7. Ghid uimitor pe Kali Linux vs Ubuntu
  8. C ++ Vector vs Array: Care sunt cele mai bune funcții