sen sijaan, että käyttäisimme array, voimme myös käyttää linked list toteuttaa stack. Linkitetty lista jakaa muistin dynaamisesti. Kummassakin skenaariossa ajallinen monimutkaisuus on kuitenkin sama kaikille operaatioille eli push, pop ja peek.
linkitetyssä Stack-toteutuksessa solmut säilyvät ei-yhtenäisesti muistissa. Jokainen solmu sisältää osoittimen sen välittömään seuraajaan solmuun pinossa. Stackin sanotaan olevan ylilento, jos muistikasaan jäävä tila ei riitä solmun luomiseen.
pinon ylimmän solmun osoitekentässä on aina nolla. Lets keskustella siitä, miten, kukin toiminto suoritetaan linkitetyn luettelon täytäntöönpanoa stack.
solmun lisäämistä pinoon (Push-operaatio)
solmun lisäämistä pinoon kutsutaan push-operaatioksi. Elementin työntäminen pinoon linkitetyn luettelon toteutuksessa eroaa array-toteutuksesta. Jotta voidaan työntää Elementti pinoon, seuraavat vaiheet ovat mukana.
- luo ensin solmu ja jaa sille muistia.
- jos lista on tyhjä, kohde työnnetään listan aloitussolmuksi. Tämä sisältää arvon määrittämisen solmun dataosalle ja nollan määrittämisen solmun osoiteosalle.
- Jos luettelossa on jo joitakin solmuja, on lisättävä uusi elementti listan alkuun (ettei rikota pinon ominaisuutta). Tätä varten määritä alkuaineen osoite uuden solmun osoitekenttään ja tee uusi solmu, luettelon aloitussolmu.
- Tarkista alivirtaus ehto: alivirtaus ehto tapahtuu, kun yritämme pop jo tyhjä pino. Pino on tyhjä, jos listan pääosoitin osoittaa nolliin.
- Säädä pään osoitinta sen mukaisesti: pinossa elementit poksautetaan vain toisesta päästä, joten pään osoittimeen tallennettu arvo on poistettava ja solmu vapautettava. Päänsolmun seuraava solmu muuttuu nyt päänsolmuksi.
- Kopioi pääosoitin väliaikaiseksi osoittimeksi.
- siirrä tilapäinen osoitin luettelon kaikkien solmujen läpi ja tulosta jokaiseen solmuun liitetty arvokenttä.
ajan monimutkaisuus: o(1)
C toteutus:
solmun poistaminen pinosta (POP-operaatio)
solmun poistaminen pinon päältä kutsutaan pop-operaatioksi. Solmun poistaminen linkitetystä luettelosta Stack-toteutus eroaa array-toteutuksesta. Jotta pop Elementti pinosta, meidän on noudatettava seuraavia vaiheita :
Ajallinen Monimutkaisuus : o (n)
C toteutus
Näytä solmut (läpikäynti)
näyttämällä kaikki pinon solmut tarvitsee kulkea kaikki linkitetyn luettelon solmut pinon muotoon järjestettynä. Tätä varten meidän on noudatettava seuraavia vaiheita.
Ajallinen Monimutkaisuus : o (n)