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 perusteet | Pino | Jonottaa |
---|---|---|
Toimintaperiaate | LIFO (viimeksi ensimmäisen kerran) | FIFO (ensiksi ensimmäistä kertaa) |
Rakenne | Samaa 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ä | Yksi | Kaksi (yksinkertaisessa jonotapauksessa) |
Suoritetut toimet | Push ja pop | Enqueue ja dequeue |
Tyhjän tilan tarkastelu | Top == -1 | Edessä == -1 || Edessä == Taka + 1 |
Täydellisen kunnon tarkastelu | Top == Max - 1 | Taka == Max - 1 |
variantit | Siinä ei ole vaihtoehtoja. | Siinä on muunnoksia, kuten pyöreä jono, prioriteettijono, kaksinkertaisesti päättynyt jono. |
täytäntöönpano | yksinkertaisempi | Verrattain 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
- Pino seuraa LIFO-mekanismia ja jono seuraa FIFO-mekanismia elementtien lisäämiseksi ja poistamiseksi.
- 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.
- 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.
- Pino suorittaa kaksi operaatiota, jotka tunnetaan nimellä push ja pop, jonossa Queue tunnetaan nimellä enqueue ja dequeue.
- Stack-toteutus on helpompaa, kun taas jonojen toteutus on hankalaa.
- 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:
- 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.
- Dynaamista toteutusta kutsutaan myös linkitetyn luettelon esitykseksi ja käyttää osoittimia datarakenteen pinotyypin toteuttamiseksi.
Jonon toteutus
Jonot voidaan toteuttaa kahdella tavalla:
- 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ä. - 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:
- 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 ilmoitetaanint 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");
}
}
- 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 ilmoitetaanint 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:
- Enqueue : Elementin lisääminen jonoon.Käynnistystoiminto C: ssä:
Queue on ilmoitettuint 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") ;
}
}
- Dequeue : Elementin poistaminen jonosta.Käynnistystoiminto C: ssä:
Queue on ilmoitettuint 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ä.