Ero sivun ”Pino” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
p Botti poisti 1 Wikidatan sivulle d:q177929 siirrettyä kielilinkkiä
Ei muokkausyhteenvetoa
Rivi 2:
*''push'': lisää alkion pinon päällimmäiseksi
*''pop'': poimii pinon päällimmäisen alkion (eli samanaikaisesti palauttaa ja poistaa sen)
*''empty'': tarkistaa, onko pino on tyhjä
Lisäksi usein:
*''peek'' tai ''top'': palauttaa pinon päällimmäisen alkion poistamatta sitä (sama kuin peräkkäiset ''pop'' ja ''push'') <!-- ei täysin välttämätön pino-operaatio, usein määriteltynä vain =pop+push -->
Rivi 8:
*''full'': tarkistaa, onko pino täysi
 
Kaikki pinolle määritetyt operaatiot saadaan suoriutumaan [[asymptoottinen suoritusaika|vakioajassa]] eli koosta riippumatta, jos sepino toteutetaan esimerkiksi [[linkitetty lista|linkitettynä listana]].
 
[[Suoritin|Suorittimen]] käskykantaan on lähes aina sisäänrakennettu tehokas '''ajonaikainen pino''', joka hallitsee aliohjelmien kutsu- ja paluuosoitteita, kutsuparametreja ja paikallisia muuttujia. Se on välttämätön rekursiivisten aliohjelmien toteuttamiseen.
Rivi 17:
((1+2)*(3+4)/3)+3 = 10
Yhtälö voidaan muuttaa [[Käänteinen puolalainen notaatio|postfix-muotoon]] eli muotoon, jossa ei tarvita sulkuja. Muunnos voidaan tehdä [[Shunting yard]] -algoritmilla, joka sekin käyttää pinoa.
 
1 2 + 3 4 + * 3 / 3 +
 
Tämän jälkeen laskutoimitus on helppo toteuttaa pinon avulla: Edetään askel askeleelta vasemmalta oikealle lisäten lukuja pinoon. Kun törmätään operaattoriin, pinosta poimitaan tarvittava määrä lukuja ja tehdään operaattorin määrittämä laskutoimitus niiden välillä. Laskutoimituksen tulos tallennetaan takaisin pinoon. Syötteen loputtua vastaus on luettavissa pinosta.
 
Rivi 62 ⟶ 60:
* uudet paikalliset muuttujat
 
Tätä arvokokoelmaa kutsutaan [[aktivaatiotietue]]eksi. Se lisätään pinoon jokaisen kutsun yhteydessä, ja poistetaan aliohjelman palatessa. Näin aliohjelmia voidaan kutsua sisäkkäin ja ne voivat myös kutsua itseään.
 
Ajonaikainen pino on yleisesti toteutettu kiinteänä muistialueena ja pinon päähän osoittavana ''pino-osoitinrekisterinä''. Päättymätön rekursio aiheuttaakin pinon täyttymisen ja ajonaikaisen virheen.
Noudettu kohteesta ”https://fi.wikipedia.org/wiki/Pino