Atšķirība starp steku un rindu

Autors: Laura McKinney
Radīšanas Datums: 2 Aprīlis 2021
Atjaunināšanas Datums: 16 Maijs 2024
Anonim
Always sleep with your feet to the door. Scary stories at night. Real life stories
Video: Always sleep with your feet to the door. Scary stories at night. Real life stories

Saturs


Gan steks, gan rinda ir primitīvas datu struktūras. Galvenās atšķirības starp kaudzīti un rindu ir tādas, ka kaudze izmanto LIFO (pēdējā pirmajā ārā) metodi, lai piekļūtu un pievienotu datu elementus, turpretī Rinda izmanto FIFO (Pirmais pirmais ārā) metodi, lai piekļūtu un pievienotu datu elementus.

Stack ir atvērts tikai viens gals datu elementu stumšanai un izlikšanai, no otras puses. Rindā ir atvērti abi gali datu elementu sagraušanai un atkopšanai.

Krājums un rinda ir datu struktūras, ko izmanto datu elementu glabāšanai, un faktiski ir balstītas uz kādu reālās pasaules ekvivalentu. Piemēram, kaudze ir CD kaudze, kuru var izņemt un ievietot kompaktdiskā, izmantojot kompaktdisku kaudzes augšdaļu. Tāpat rinda ir rinda uz Teātra biļetēm, kur vispirms tiek apkalpota persona, kura stāv pirmajā vietā, t.i., rindas priekšā, un jaunā persona, kas ierodas, parādīsies rindas aizmugurē (rindas aizmugurē).

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Īstenošana
  5. Operācijas
  6. Lietojumprogrammas
  7. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsKaudze Rinda
Darba principsLIFO (pēdējais pirmajā)FIFO (pirmais ārā pirmais)
UzbūveTo pašu galu izmanto elementu ievietošanai un dzēšanai.Vienu galu izmanto ievietošanai, t.i., aizmugurējo galu, bet otru galu izmanto elementu dzēšanai, t.i., priekšējo galu.
Izmantoto norāžu skaitsVienuDivi (vienkāršā rindā)
Veiktas operācijasPush and Pop Enqueque un dequeque
Tukšā stāvokļa pārbaudeAugšā == -1Priekšpuse == -1 || Priekšpuse == Aizmugure + 1
Pilna stāvokļa pārbaude
Augšā == Maksimums - 1Aizmugurē == Maks. - 1
VariantiTam nav variantu.Tam ir tādi varianti kā riņķveida rinda, prioritārā rinda, divkārši noslēgta rinda.
ĪstenošanaVienkāršākSalīdzinoši sarežģīti


Skursteņa definīcija

Stack ir primitīva lineāra datu struktūra. Tas ir sakārtots saraksts, kurā tiek pievienots jauns vienums un esošais elements tiek izdzēsts tikai no viena gala, ko sauc par kaudzes augšdaļu (TOS). Tā kā visa dzēšana un ievietošana kaudzē tiek veikta no kaudzes augšdaļas, pēdējais pievienotais elements būs pirmais, kas tiks noņemts no kaudzītes. Tas ir iemesls, kāpēc steku sauc par saraksta Pēdējais pirmais-ārā (LIFO) tipu.

Ņemiet vērā, ka elements, kuram bieži piekļūst kaudzē, ir augšējais elements, turpretī pēdējais pieejamais elements ir kaudze apakšā.

Piemērs

Daži no jums var ēst cepumus (vai Poppins). Ja jūs pieņemat, tikai viena vāka puse ir saplēsta, un cepumi tiek izņemti pa vienam. To sauc par popping, un līdzīgi, ja vēlaties kādu laiku vēlāk saglabāt dažus cepumus, jūs tos ievietosiet atpakaļ iepakojumā caur to pašu saplēsto galu, ko sauc par stumšanu.


Rindas definīcija

Rinda ir lineāra datu struktūra, kas ietilpst primitīvā tipa kategorijā. Tā ir līdzīga veida elementu kolekcija. Jaunu elementu pievienošana notiek vienā galā, ko sauc par aizmugures galu. Līdzīgi esošo elementu dzēšana notiek otrā galā, ko sauc par Front-end, un loģiski, ka tas ir saraksta “pirmais pirmais ārā” (FIFO) tips.

Piemērs

Ikdienas dzīvē mēs sastopamies ar daudzām situācijām, kad mēs gaidām vēlamo pakalpojumu, tur mums jāiekļūst gaidīšanas rindā, lai saņemtu mūsu apkalpošanu. Šo gaidīšanas rindu var uzskatīt par rindu.

  1. No otras puses, steks seko LIFO mehānismam. Rinda seko FIFO mehānismam, lai pievienotu un noņemtu elementus.
  2. Kaudzē to pašu galu izmanto, lai ievietotu un izdzēstu elementus. Gluži pretēji, rindā tiek izmantoti divi dažādi gali, lai ievietotu un izdzēstu elementus.
  3. Tā kā kaudzei ir tikai viens atvērts gals, tas ir iemesls, lai tikai vienu rādītāju izmantotu, lai atsauktos uz kaudzītes augšdaļu. Bet rindā tiek izmantoti divi rādītāji, lai norādītu rindas priekšējo un aizmugurējo galu.
  4. Steks veic divas operācijas, kas pazīstamas kā push un pop, kamēr rindā tās sauc par enqueque and dequeue.
  5. Steka ieviešana ir vienkāršāka, turpretī rindu ieviešana ir sarežģīta.
  6. Rindā ir tādi varianti kā riņķveida rinda, prioritārā rinda, ar divpusīgi noslēgtu rindu utt. Pretēji kaudzei nav variantu.

Skursteņa ieviešana

Kaudze var tikt pielietota divos veidos:

  1. Statiskā ieviešana kaudzes izveidošanai izmanto masīvus. Statiskā ieviešana, lai arī ir piepūles paņēmiens, bet nav elastīgs izveides veids, jo skursteņa lieluma paziņošana jāveic programmas izstrādes laikā, pēc tam izmēru nevar mainīt. Turklāt statiskā ieviešana nav tik efektīva atmiņas izmantošanā. Tā kā masīvs (steka ieviešanai) tiek deklarēts pirms operācijas sākuma (programmas izstrādes laikā). Ja sakārtoto elementu skaits kaudzē ir ļoti mazāks, statiski iedalītā atmiņa tiks izšķiesta. No otras puses, ja kaudzē ir vairāk elementu, kas jāuzglabā, mēs nevaram mainīt masīva lielumu, lai palielinātu tā ietilpību, lai tas varētu uzņemt jaunus elementus.
  2. Dinamiska ieviešana tiek saukts arī par saistītā saraksta attēlojumu un izmanto norādes, lai ieviestu steka veida datu struktūru.

Rindu ieviešana

Rindu var ieviest divos veidos:

  1. Statiskā ieviešana: Ja rinda tiek ieviesta, izmantojot masīvus, pirms tam ir jāpārliecinās precīzs elementu skaits, ko mēs vēlamies saglabāt rindā, jo masīva lielums ir jādeklarē projektēšanas laikā vai pirms apstrādes sākšanas. Šajā gadījumā masīva sākums kļūs par rindas priekšpusi, un masīva pēdējā atrašanās vieta darbosies kā rindas aizmugure. Šī saistība nodrošina, ka visi elementi pastāv rindā, ja tos ievieš, izmantojot masīvus:
    priekšā - aizmugurē + 1
    Ja “aizmugurē <priekšā”, rindā nebūs neviena elementa, vai arī rinda vienmēr būs tukša.
  2. Dinamiska ieviešana: Rindu ieviešana, izmantojot norādes, galvenais trūkums ir tas, ka mezgls saistītā attēlojumā patērē vairāk atmiņas nekā attiecīgais elements masīva attēlojumā. Tā kā katrā mezglā ir vismaz divi lauki, viens - datu laukam, bet otrs - nākamā mezgla adreses saglabāšanai, savukārt saistītā attēlojumā ir tikai datu lauks. Saistītā attēlojuma izmantošanas nopelns kļūst acīmredzams, ja ir nepieciešams ievietot vai izdzēst elementu citu elementu grupas vidū.

Operācijas uz steka

Pamatdarbības, kuras var veikt ar steku, ir šādas:

  1. PUSH: kad kaudzes augšpusē tiek pievienots jauns elements, to sauc par PUSH darbību. Nospiežot elementu kaudzē, tas tiek pievienots, jo jaunais elements tiks ievietots augšpusē. Pēc katras stumšanas operācijas augšdaļu palielina par vienu. Ja masīvs ir pilns un jaunu elementu nevar pievienot, to sauc par STACK-FULL stāvokli vai STACK OVERFLOW. PUSH OPERATION - funkcija C:
    Uzskata kaudze tiek deklarēta kā
    int kaudze, augšā = -1;
    tukšs spiediens ()
    {
    int postenis;
    ja (augšā <4)
    {
    f ("Ievadiet numuru");
    skenēšana ("% d", & vienums);
    augšā = augšā + 1;
    kaudze = prece;
    }
    cits
    {
    f ("Kaudze ir pilna");
    }
    }
  2. POP: Ja elements tiek izdzēsts no kaudzes augšdaļas, to sauc par POP darbību. Pēc katras pop operācijas kaudze tiek samazināta par vienu. Ja kaudzē nav atlicis neviena elementa un tiek veikts pops, tas radīs stāvokli STACK UNDERFLOW, kas nozīmē, ka jūsu kaudze ir tukša. POP DARBĪBA - funkcijas C:
    Uzskata kaudze tiek deklarēta kā
    int kaudze, augšā = -1;
    nederīgs pop ()
    {
    int postenis;
    ja (augšā> = 4)
    {
    prece = kaudze;
    augšā = augšā - 1;
    f ("Svītrots skaitlis ir =% d", vienums);
    }
    cits
    {
    f ("Kaudze ir tukša");
    }
    }

Operācijas rindā

Pamata operācijas, kuras var veikt rindā, ir:

  1. Enqueue: Lai ievietotu elementu rindā. Darbības funkcijas aktivizēšana C:
    Rinda tiek deklarēta kā
    int rinda, priekšā = -1 un aizmugurē = -1;
    anulēt pievienošanu ()
    {
    int postenis;
    ja (aizmugurē <4)
    {
    f ("Ievadiet numuru");
    skenēšana ("% d", & vienums);
    ja (priekšā == -1)
    {
    priekšā = 0;
    aizmugure = 0;
    }
    cits
    {
    aizmugure = aizmugure + 1;
    }
    rinda = prece;
    }
    cits
    {
    f ("Rinda ir pilna");
    }
    }
  2. Atlikt: Lai izdzēstu elementu no rindas. Darbības funkcijas aktivizēšana C:
    Rinda tiek deklarēta kā
    int rinda, priekšā = -1 un aizmugurē = -1;
    anulēt dzēst ()
    {
    int postenis;
    ja (priekšā! = -1)
    {
    prece = rinda;
    ja (priekšā == aizmugurē)
    {
    priekšā = -1;
    aizmugure = -1;
    }
    cits
    {
    priekšā = priekšā + 1;
    f ("Svītrots skaitlis ir =% d", vienums);
    }
    }
    cits
    {
    f ("Rinda ir tukša");
    }
    }

Stack lietojumi

  • Parsēšana kompilatorā.
  • Java virtuālā mašīna.
  • Atsaukt tekstapstrādē.
  • Poga Atpakaļ Web pārlūkā.
  • PostScript valoda ers.
  • Funkciju izsaukumu ieviešana kompilatorā.

Rindas pieteikumi

  • Datu buferi
  • Asinhronā datu pārsūtīšana (faila IO, caurules, kontaktligzdas).
  • Pieprasījumu piešķiršana koplietojamam resursam (er, procesoram).
  • Satiksmes analīze.
  • Nosakiet kasieru skaitu lielveikalā.

Secinājums

Steks un rinda ir lineāras datu struktūras, kas dažos veidos atšķiras, piemēram, darba mehānisms, struktūra, ieviešana, varianti, bet abus izmanto, lai saglabātu sarakstā esošos elementus un veiktu sarakstā veiktās darbības, piemēram, elementu pievienošanu un dzēšanu. Lai gan vienkāršajai rindai ir daži ierobežojumi, kas tiek atgūti, izmantojot cita veida rindas.