Sobes.tech
Junior

Cum funcționează stiva în contextul programării?

sobes.tech AI

Răspuns de la AI

Stiva este un tip de dată abstractă care funcționează după principiul LIFO (Last-In, First-Out).

Operațiuni principale cu stiva:

  • Push: Adăugarea unui element în vârful stivei.
  • Pop: Eliminarea și returnarea elementului din vârful stivei.
  • Peek (sau Top): Returnarea elementului din vârf fără a-l elimina.
  • isEmpty: Verificarea dacă stiva este goală.
  • size: Returnarea numărului de elemente din stivă.

Exemplu de implementare a unei stive în Kotlin folosind MutableList:

class Stack<T> {

    private val elements = mutableListOf<T>()

    fun push(item: T) {
        elements.add(item)
    }

    fun pop(): T? {
        return if (!isEmpty()) {
            elements.removeAt(elements.size - 1)
        } else {
            null // Sau aruncarea unei excepții
        }
    }

    fun peek(): T? {
        return if (!isEmpty()) {
            elements.last()
        } else {
            null
        }
    }

    fun isEmpty(): Boolean {
        return elements.isEmpty()
    }

    fun size(): Int {
        return elements.size
    }
}

Utilizarea stivelor în programare este frecventă în:

  • Calculul expresiilor: Conversia notării infixe în postfix sau prefix, calculul expresiilor postfix.
  • Gestionarea apelurilor de funcții/methods: Stiva de apeluri păstrează informații despre funcțiile active.
  • Anulare/repetare acțiuni: Editoare de cod și editoare grafice folosesc stive pentru istoricul acțiunilor.
  • Parcurgerea grafurilor și arborilor: Se folosește pentru implementarea algoritmului de căutare în adâncime (DFS).
  • Analiza sintactică: Parserele folosesc stive pentru verificarea corectitudinii sintaxei.

Stiva este o structură de date fundamentală și are o importanță majoră pentru înțelegerea principiilor de funcționare ale multor algoritmi și mecanisme de nivel scăzut în sistemele de operare și mașinile virtuale.