Andmestruktuurid ja algoritmid C ++

Andmestruktuurid ja algoritmid C ++ - tähendab elementide teatud viisil paigutamist või korraldamist. Kui ütleme, et peame elemendid korrastama, saab neid elemente korraldada erineval kujul. Näiteks saab sokke paigutada mitmel erineval viisil. Võite selle lihtsalt oma kapis segi ajada. Või võite hoida seda korralikult volditud. Parim viis on voltimine ja nende värvilahendus. Nii et kindla sokipaari otsimiseks on kolmas paigutus ideaalne.

Sarnasel viisil sokkide korraldamisel võib andmeid korraldada ka erineval viisil või vormis. Neid erinevaid andmete korraldamise viise nimetatakse andmestruktuuriks. Vaatame andmestruktuuri ametlikku määratlust ning andmestruktuuride ja algoritmide põhitõdesid.

Andmestruktuurid ja algoritmid C ++:

Konkreetse andmekorralduse loogiline või matemaatiline mudel.

VÕI

See on konkreetne viis andmete korraldamiseks arvutis nii, et neid saaks kasutada.

Sarnaselt sokkidega; C ++ loendi andmestruktuuride ja algoritmide erinev korraldus on -

  1. Massiiv
  2. Lingitud nimekiri
  3. Korstnat
  4. Järjekord
  5. Puu
  6. Graafik
  7. Räsitabel
  8. Hunnik
  9. Rekordid
  10. Lauad

Need andmestruktuurid ja algoritmid C ++ on programmeerimisel väga olulised. Hea programmeerija paneb alati rõhku pigem andmete struktuurile kui koodile. Iga programmeerimiskeel töötab erinevatel C ++ andmestruktuuridel ja algoritmidel. C ++ -s saadaolevad andmestruktuurid on järgmised.

  1. Massiiv
  2. Lingitud nimekiri
  3. Korstnat
  4. Järjekord
  5. Puu
  6. Graafik
  7. Räsitabel
  8. Hunnik

Arutame seda ükshaaval:

# 1 massiiv

Massiiv on lihtsaim tüüpi andmestruktuurid ja algoritmid C ++. Massiivi määratletakse sama andmetüübi andmeelementide kindla suurusega järjestikuse kogumina. Nt a0 = 12, a1 = 21, a2 = 14, a3 = 15 … .Me võime tähistada ühemõõtmelist massiivi, nagu näidatud joonisel:

Kus

0, 1, 2, 3… ..n nimetatakse alaindeksiks või indeksiks

a (1), a (2), … a (n) nimetatakse alaindeksi muutujaks

See võib olla ühemõõtmeline, kahemõõtmeline, kolmemõõtmeline ja nii edasi mitmemõõtmeline.

Mälumassiiv salvestub külgnevatesse mälukohtadesse.

Madalaim aadress vastab esimesele elemendile

Kõrgeim aadress vastab viimasele elemendile

1-D (1-mõõtmeline) massiivi C ++ -ga saame deklareerida järgmiselt

dataType arrayName (arraySize);

Nt int num (5);

Massiivi lähtestamine C ++ -s

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

Saame deklaratsiooni ja lähtestamise ühendada üheks avalduseks järgmiselt.

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

Kui tahame massiivi suurust dünaamiliselt eraldada, peaksime uue operaatori kasutama järgmiselt

int * a = uus int (suurus);

Massiivi puuduseks on elementide sisestamine ja kustutamine aeglaselt nagu tellitud massiivi ja selle kindla suurusega salvestusruumi korral.

# 2 lingitud nimekiri

Loend viitab lineaarsele esemete kogumile. Lingitud loend on ühendatud sõlmede seeria (andmeelement), nagu on näidatud joonisel 3. Päise sõlm osutab loendi esimesele sõlmele ja viimane sõlm osutab NULL-i, mida tähistab Æ. Kuna iga sõlm sisaldab vähemalt.

  1. Andmete tükk (mis tahes tüüpi)
  2. Kursor loendi järgmisele sõlmele

Lingitud loend on mälus esindatud kahe massiivi abil. Üks massiiv salvestab teabe nimega info, mis on salvestatavad andmed, ja teised salvestavad järgmise osuti välja LINK, mis on järgmise sõlme aadress.

Lingitud loendi eelis massiivi ees:

Nii massiiv kui ka lingitud loend on mälus olevate üksuste loendi kujutised. Oluline erinevus on üksuste ühendamise viis. Massiivi peamine piirang on elementide sisestamine massiivi ja elementide kustutamine tellitud massiivist on rasked, kuna ülejäänud elemendid peavad olema teisaldatud. Elementide sisestamine ja kustutamine lingitud loendist on väga lihtne.

Märkus. Saage C ++ arendajaks
Õppige erinevate platvormide programme kujundama ja kohandama. Tarkvararakenduste kodeerimine, testimine, silumine ja juurutamine. Arendage oskusi rakenduste sujuva toimimise tagamiseks.

Lingitud loendite tüübid on järgmised:

1. Aheldatud link : sisaldab ainult ühte lingitud välja, mis sisaldab loendis järgmise sõlme aadressi, ja faili, mis sisaldab salvestatavat teavet.

2. Ümarringiga lingitud loend on ainult üks loend, kuid loendi viimane sõlm sisaldab nulli asemel esimese sõlme aadressi. See on pea sisu ja viimase sõlme järgmine väli on samad.

3. Kahekordselt lingitud loend sisaldab kahte lingitud välja eelmist ja järgmist. Varem lingitud väli, millel on loendis eelmise sõlme aadress ja järgmine lingitud väli, hoiab loendis järgmise sõlme aadressi ja esitatud teave hoiab talletatavat teavet.

4. Topeltringiga lingitud nimekiri on kahekordselt lingitud, kuid viimase sõlme järgmine väli sisaldab nulli asemel esimese sõlme aadressi.

Soovitatavad kursused

  • Kursus VB.NET-is
  • Andmeteaduse programmeerimise koolitus
  • Online ISTQB kursus
  • Kali Linuxi koolituskursus

Lingitud loendi rakendamine C ++-s hõlmab sõlme loomist, selle kustutamist loendist, vastloodud sõlme lisamist loendisse ja sõlme otsimist konkreetse võtmega.

Sõlme loomise kood on antud järgmiselt:

Sõlme lisamine loendisse hõlmab kolme juhtumit

1. Sõlme sisestamine algusesse tähendab vastloodud sõlme sisestamist algusse . Sõlme sisestamiseks alguses looge kõigepealt uus sõlm ja määrake uuele punktile punkt vanast algusest ning seejärel värskendage alguspunkti uuele sõlmele vastavalt allolevale joonisele:

Kood sõlme sisestamiseks alguses:

2. Sõlme sisestamine saba juurde tähendab vastloodud sõlme lisamist viimase sõlmena. Sõlme lisamiseks sabasõlmena tuleb luua uus sõlm ja seada vana viimane sõlm uuele sõlmele ja seejärel värskendada saba, et osutada uuele sõlmele.

3. Sõlme sisestamine antud asukohta hõlmab uue temp-sõlme loomist. Seejärel tuleb leida vastloodud sõlme sisestamise koht.

Sõlme sisestamise kood antud asukohas:

Sõlme kustutamine loendist hõlmab sõlme eemaldamist olemasolevast loendist. Sõlme kustutamine lingiloendist on lihtne kui sõlme lisamine loendisse. C ++ -s antakse sõlme kustutamiseks kood järgmiselt:

Kui liigute loendist konkreetse võtmega (väärtusega) sõlme, otsitakse loendist sõlme, mille teave ühtib antud sõlme võtmega. Järgmine C ++ kood läbib nimekirja. andmestruktuurid ja algoritmid C ++

# 3 virn

Virn on loetelu elementidest, millesse saab elemendi sisestada või kustutada ainult ühes otsas, mida nimetatakse virna ülaosaks. Vaatleme Hanoi torni näidet. Kui peame plaadi sisestama, peame selle sisestama ainult ülalt ja samamoodi toimub plaadi eemaldamine ainult ülalt.

Stack kasutab LIFO põhimõtet, mis tähendab, et see töötab järjekorras Viimane esimesena. See on viimane virna lisatud element on esimene eemaldamise element. Seega saab virnaga teha neli põhitoimingut:

  • Isempty: see toiming näeb, kas virn on tühi.
  • Lükka : see toiming lisab virna uue üksuse.
  • Pop: selle toiminguga eemaldatakse üksus viimati lisatud virnast.
  • Ülaosa: see toiming tagastab üksuse, mis lisati viimati virna.

Järgnev joonis on näide virnast, kus virna sisestamine ja eseme virnast eemaldamine toimub virna ülaosast ja mitte kusagil mujal.

Virna ülevool

Tingimus, mis tuleneb elemendi proovimisest täis virnale suruda.

Virna alavool

Tingimus, mis tuleneb tühja virna hüppamisest.

Siin on näidatud virna mõned tõuke- ja hüppeloperatsioonid. Oletame, et algul on stäkk tühi, siis lisasime F, A, M, R, N. Seejärel poputage kaks korda ja lükake N, H, B, T, K, O, P.

Korstna rakendamine:

Seda saab rakendada massiivi või lingitud loendit kasutades.

Järgmine antud kood kujutab, kuidas pinu C ++-is rakendatakse, kasutades klassi. Siin on määratletud üks pinu nimega klass, milles loodi dünaamilise suurusega pulk-nimeline massiiv ja kaks peamist funktsiooni push ja pop.

Virna ülevool: kui ülalt> = suurus-1

Virna alavool: kui ülemine <0

Seotud artiklid:-

Siin on mõned artiklid, mis on seotud andmestruktuuride ja algoritmidega C ++, mis aitavad teil saada rohkem üksikasju algoritmide C ++ ja andmestruktuuride ning algoritmide kohta, nii et läbiksite palun allpool toodud linki. kui teile meeldivad artikli andmestruktuurid ja algoritmid C ++, siis andke meile oma väärtuslik kommentaar.

  1. C ++ programmeerimiskeele petmise leht
  2. Linux vs Ubuntu
  3. C ++ intervjuu küsimused, mida peate teadma
  4. Andmestruktuuride ja algoritmide küsitlemise küsimused | Kõige kasulikum
  5. Parim artikkel algoritmide ja krüptograafia jaoks (näited)
  6. 8 vinge algoritmiga intervjuu küsimust ja vastust
  7. Hämmastav juhend Kali Linux vs Ubuntu kohta
  8. C ++ vektor vs massiiv: millised on parimad funktsioonid

Kategooria: