Stack

Eine Stack ist eine Stapel von Werten nach dem LIFO-Prinzip1 verarbeitet werden.

Über die Methoden \Alvine\Types\Stack::isEmpty(), \Alvine\Types\Stack::peek(), \Alvine\Types\Stack::pop(), \Alvine\Types\Stack::count() und \Alvine\Types\Stack::push($object) wird der Stack verwaltet.

$stack = new \Alvine\Types\Stack();
$stack->push(new \Alvine\Types\StringType('Value 1'));
$stack->push(new \Alvine\Types\StringType('Value 2'));
$stack->push(new \Alvine\Types\StringType('Value 3'));

while(!$stack->isEmpty()) {
    echo $stack->pop()."\n";
}

// → Value 2
//   Value 2
//   Value 1

Die Methode \Alvine\Types\Stack::peek() holt den nächsten Wert vom Stack, lässt aber anders als die Methode \Alvine\Types\Stack::pop() den Wert auf dem Stapel.

$stack = new \Alvine\Types\Stack();
$stack->push(new \Alvine\Types\StringType('Value 1'));
$stack->push(new \Alvine\Types\StringType('Value 2'));
$stack->push(new \Alvine\Types\StringType('Value 3'));

echo $stack->peek();
echo $stack->peek();
echo $stack->peek();
// → Value 3
//   Value 3
//   Value 3