Suositeltava, 2024

Toimituksen Valinta

Stackin ja jonon välinen ero

Stack ja Queue molemmat ovat ei-primitiivisiä tietorakenteita. Pino ja jono ovat tärkeimmät erot siinä, että pino käyttää LIFO-menetelmää (viimeinen ensim- mäinen ulostulo) datan elementtien käyttämiseen ja lisäämiseen, kun taas jono käyttää FIFO-menetelmää (First in first out), jonka avulla pääsee käsiksi ja lisätään dataelementtejä.

Pino on vain yksi pää, joka on avoinna datanelementtien työntämiseksi ja avaamiseksi toisella kädellä Jonossa on molemmat päät avoinna datan elementtien enqueuing ja dequeuing.

Pino ja jono ovat tietorakenteita, joita käytetään tietojen elementtien tallentamiseen ja jotka tosiasiallisesti perustuvat todelliseen maailmaan. Esimerkiksi pino on pino CD-levyiltä, ​​joissa voit ottaa CD-levyn CD-levyjen pinon päälle. Vastaavasti jono on teatterilippujen jono, jossa ensin seisova henkilö, eli jonon etuosa, palvelee ensin ja uusi saapuva henkilö ilmestyy jonon takaosaan (jonon takapää).

Vertailukaavio

Vertailun perusteetPinoJonottaa
ToimintaperiaateLIFO (viimeksi ensimmäisen kerran)FIFO (ensiksi ensimmäistä kertaa)
RakenneSamaa päätä käytetään elementtien lisäämiseen ja poistamiseen.Yksi pää käytetään insertiota varten, ts. Takapäätä ja toista päätä käytetään elementtien poistamiseen eli etupäähän.
Käytettyjen osoittimien lukumääräYksiKaksi (yksinkertaisessa jonotapauksessa)
Suoritetut toimetPush ja popEnqueue ja dequeue
Tyhjän tilan tarkasteluTop == -1Edessä == -1 || Edessä == Taka + 1
Täydellisen kunnon tarkastelu
Top == Max - 1Taka == Max - 1
variantitSiinä ei ole vaihtoehtoja.Siinä on muunnoksia, kuten pyöreä jono, prioriteettijono, kaksinkertaisesti päättynyt jono.
täytäntöönpanoyksinkertaisempiVerrattain monimutkainen

Määritelmä pino

Pino on ei-primitiivinen lineaarinen datarakenne. Se on tilattu lista, jossa uusi kohde lisätään ja olemassa oleva elementti poistetaan vain yhdestä päästä, kutsutaan pinon yläosaksi (TOS). Koska kaikki poistaminen ja lisäys pinoon tehdään pinon yläosasta, viimeinen lisätty elementti on ensimmäinen, joka poistetaan pinosta. Tämä on syy siihen, miksi pinota kutsutaan viimeisimmän (LIFO) listan luetteloksi.

Huomaa, että pinossa usein käytettävä elementti on ylin elementti, kun taas viimeinen käytettävissä oleva elementti on pinon alaosassa.

esimerkki

Jotkut teistä voivat syödä keksejä (tai Poppins). Jos olet ajatellut, vain yksi kannen puoli on repeytynyt, ja keksejä otetaan yksi kerrallaan. Tätä kutsutaan poppingiksi, ja jos haluat jo jonkin aikaa säilyttää joitakin keksejä, laitat ne takaisin pakkaukseen saman repeytyneen pään kautta.

Jonon määritelmä

Jonossa on lineaarinen tietorakenne, joka on ei-primitiivisen tyypin luokka. Se on kokoelma samanlaisia ​​elementtejä. Uusien elementtien lisääminen tapahtuu toisessa päässä, nimeltään takapää. Samoin olemassa olevien elementtien poistaminen tapahtuu toisessa päässä, jota kutsutaan Front-endiksi, ja se on loogisesti ensimmäinen FIFO-tyyppinen lista.

esimerkki

Meidän jokapäiväisessä elämässämme törmätään moniin tilanteisiin, joissa me odotamme toivottua palvelua, ja meidän on päästävä odottamaan linjaamme vuorollemme huollettavaksi. Tätä odottavaa jonoa voidaan ajatella jonoksi.

Stackin ja jonon keskeiset erot

  1. Pino seuraa LIFO-mekanismia ja jono seuraa FIFO-mekanismia elementtien lisäämiseksi ja poistamiseksi.
  2. Pinoissa käytetään samaa päätyä elementtien asettamiseen ja poistamiseen. Päinvastoin, jonossa käytetään kahta eri päätä elementtien lisäämiseksi ja poistamiseksi.
  3. Koska pinossa on vain yksi avoin pää, on syytä käyttää vain yhtä osoitinta viittaamaan pinon yläosaan. Mutta jonossa käytetään kahta viittausta jonon etu- ja takapäähän.
  4. Pino suorittaa kaksi operaatiota, jotka tunnetaan nimellä push ja pop, jonossa Queue tunnetaan nimellä enqueue ja dequeue.
  5. Stack-toteutus on helpompaa, kun taas jonojen toteutus on hankalaa.
  6. Jonossa on muunnoksia, kuten pyöreä jono, prioriteettijono, kaksinkertaisesti päättynyt jono jne. Sen sijaan pinossa ei ole vaihtoehtoja.

Pino-toteutus

Pinoa voidaan käyttää kahdella tavalla:

  1. Staattinen toteutus käyttää massoja luomaan pino. Staattinen toteutus on vaivatonta tekniikkaa, mutta se ei ole joustava luomismenetelmä, koska pinon koko on ilmoitettava ohjelman suunnittelun aikana, minkä jälkeen kokoa ei voi muuttaa. Lisäksi staattinen toteutus ei ole kovin tehokas muistin hyödyntämisessä. Koska matriisi (pinoa varten) on ilmoitettu ennen operaation alkua (ohjelman suunnittelun aikana). Nyt jos lajiteltavien elementtien lukumäärä on pinossa hyvin vähäinen, staattisesti varattu muisti hukkaan. Toisaalta, jos pinoon tallennettavia elementtejä on enemmän, emme voi muuttaa ryhmän kokoa sen kapasiteetin lisäämiseksi, jotta se mahtuu uusiin elementteihin.
  2. Dynaamista toteutusta kutsutaan myös linkitetyn luettelon esitykseksi ja käyttää osoittimia datarakenteen pinotyypin toteuttamiseksi.

Jonon toteutus

Jonot voidaan toteuttaa kahdella tavalla:

  1. Staattinen toteutus : Jos jono toteutetaan käyttämällä taulukoita, on varmistettava, että jonoon tallennettavien elementtien tarkka lukumäärä on varmistettava, koska taulukon koko on ilmoitettava suunnittelun aikana tai ennen käsittelyn aloittamista. Tällöin taulukon alku tulee jonon etuosaan, ja ryhmän viimeinen sijainti toimii jonon takana. Seuraava suhde antaa koko elementit olemassa jonossa, kun ne toteutetaan käyttämällä taulukoita:
    edessä - takana + 1
    Jos “takana <edessä”, jonossa ei ole mitään elementtiä tai jono on aina tyhjä.
  2. Dynaaminen toteutus : jonojen toteuttaminen osoittimien avulla, suurin haittapuoli on se, että linkitetyn esityksen solmu kuluttaa enemmän muistitilaa kuin vastaava elementti array-esityksessä. Koska kussakin solmussa on ainakin kaksi kenttää datakenttään ja toinen tallentaa seuraavan solmun osoite, kun taas linkitetyssä esityksessä vain tietokenttä on olemassa. Linkitetyn esityksen käyttökelpoisuus tulee ilmeiseksi, kun on tarpeen lisätä tai poistaa elementti muiden elementtien ryhmän keskellä.

Stack-toiminnot

Perusoperaatiot, joita voidaan käyttää pinossa, ovat seuraavat:

  1. PUSH : kun uusi elementti lisätään pinon yläosaan, sitä kutsutaan PUSH-toiminnoksi. Elementin työntäminen pinoon vaatii elementin lisäämistä, koska uusi elementti lisätään yläreunaan. Jokaisen painallustoiminnon jälkeen yläosa kasvaa yhdellä. Jos taulukko on täynnä, eikä uutta elementtiä voi lisätä, sitä kutsutaan STACK-FULL -tilaksi tai STACK OVERFLOW. PUSH OPERATION - toiminto C: ssä:
    Ottaen huomioon pino ilmoitetaan
    int stack [5], top = -1;
    void push()
    {
    int item;
    if (top < 4)
    {
    printf ("Enter the number") ;
    scan ("%d", & item) ;
    top = top + 1;
    stack [top] = item;
    }
    else
    {
    printf (" Stack is full");
    }
    }
  2. POP : Kun elementti poistetaan pinon yläosasta, sitä kutsutaan POP-toiminnoksi. Pino vähennetään yhdellä, jokaisen pop-toiminnon jälkeen. Jos pinossa ei ole jäljellä mitään elementtiä ja pop suoritetaan, tämä johtaa STACK UNDERFLOW -tilaan, mikä tarkoittaa, että pino on tyhjä. POP-KÄYTTÖ - C-toiminnot:
    Ottaen huomioon pino ilmoitetaan
    int stack [5], top = -1;
    void pop()
    {
    int item;
    if (top >= 4)
    {
    item = stack [top];
    top = top - 1;
    printf ("Number deleted is = %d", item) ;
    }
    else
    {
    printf (" Stack is empty");
    }
    }

Toimet jonossa

Perusoperaatiot, jotka voidaan suorittaa jonossa, ovat:

  1. Enqueue : Elementin lisääminen jonoon.Käynnistystoiminto C: ssä:
    Queue on ilmoitettu
    int queue [5], Front = -1 and rear = -1;
    void add ()
    {
    int item;
    if ( rear < 4)
    {
    printf ("Enter the number") ;
    scan ("%d", & item) ;
    if (front == -1)
    {
    front =0 ;
    rear =0 ;
    }
    else
    {
    rear = rear + 1;
    }
    queue [rear] = item ;
    }
    else
    {
    printf ("Queue is full") ;
    }
    }
  2. Dequeue : Elementin poistaminen jonosta.Käynnistystoiminto C: ssä:
    Queue on ilmoitettu
    int queue [5], Front = -1 and rear = -1;
    void delete ()
    {
    int item;
    if ( front ! = -1)
    {
    item = queue [ front ] ;
    if (front == rear)
    {
    front =-1 ;
    rear =-1 ;
    }
    else
    {
    front = front + 1;
    printf ("Number deleted is = %d", item) ;
    }
    }
    else
    {
    printf ("Queue is empty") ;
    }
    }

Pino-sovellukset

  • Jäsentäminen kääntäjässä.
  • Java-virtuaalikone.
  • Kumoa tekstinkäsittelyohjelmassa.
  • Takaisin-painike Web-selaimessa.
  • Tulostimien PostScript-kieli.
  • Toimintojen puhelujen toteuttaminen kääntäjässä.

Jonon sovellukset

  • Tiedonsiirtimet
  • Asynkroninen tiedonsiirto (tiedosto IO, putket, pistorasiat).
  • Pyyntöjen jakaminen jaetulle resurssille (tulostin, prosessori).
  • Liikenteen analysointi.
  • Määritä supermarketissa olevien kassainten määrä.

johtopäätös

Pino ja jono ovat lineaarisia tietorakenteita, jotka eroavat tietyillä tavoilla, kuten työmekanismi, rakenne, toteutus, variantit, mutta molempia käytetään luettelon elementtien tallentamiseen ja toimintojen suorittamiseen luettelossa, kuten elementtien lisääminen ja poistaminen. Vaikka yksinkertaisia ​​jonoja on joitakin rajoituksia, jotka palautetaan käyttämällä muita jonotyyppejä.

Top