Deo zbornika Učimo strukture podataka

Vežba sa kartama

Potrebno je simulirati sledeće poteze sa kartama. Na početku, u ruci imamo ceo špil dok na stolu ne stoji ni jedna karta. U jednom krugu možemo ili da uzmemo bilo koju kartu iz špila i stavimo je na vrh gomile na stolu ili pogledamo kartu sa vrha gomile i uklonimo je.

Analizom problema možemo zaključiti da su nam za gomilu na stolu dovoljne 3 metode: jedna da ubacuje element u skup, druga da javi koji je element poslednji ubačen, i treća da izbacuje poslednje ubačeni element. Struktura steka rešava ovaj problem.

Primetimo da sve pomenute metode imaju vremensku složenost O(1).

Rešenje u JS-u

class Stog {
    constructor() {
      this.niz = []
    }

    dodaj(el) {
        this.niz.push(el)
    }

    ukloni(){
        return this.niz.pop()
    }

    pogledajZadnju() {
      return this.niz[this.niz.length - 1]
    }
}

const spil = ["A♥", "K♠", "Q♦", "J♣"]
const gomila = new Stog()

const odigrajKartu = karta => {
  const index = spil.indexOf(karta)
  spil.splice(index, 1)
  gomila.dodaj(karta)
}

odigrajKartu("A♥")
odigrajKartu("K♠")

console.log("Gornja karta:", gomila.pogledajZadnju()) 
console.log("Uklonjena karta:", gomila.ukloni())
console.log("Gornja karta nakon uklanjanja:", gomila.pogledajZadnju()) 

Literatura

  • N. Pavković, D. Marjanović, N. Bojčetić, Programiranje i algoritmi II, Zagreb, 2005.
  • Petlja.org, Strukture podataka