PHP 8.1.0 RC 2 available for testing

La classe SplStack

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Introduction

La classe SplStack fournit l'interface de base pour implémenter une pile, basée sur une liste doublement chaînée.

Synopsis de la classe

class SplStack extends SplDoublyLinkedList implements Iterator, ArrayAccess, Countable {
/* Méthodes */
public __construct()
public setIteratorMode(int $mode): void
/* Méthodes héritées */
public SplDoublyLinkedList::add(int $index, mixed $value): void
public SplDoublyLinkedList::offsetExists(int $index): bool
public SplDoublyLinkedList::offsetSet(?int $index, mixed $value): void
public SplDoublyLinkedList::offsetUnset(int $index): void
public SplDoublyLinkedList::push(mixed $value): void
public SplDoublyLinkedList::unserialize(string $data): void
public SplDoublyLinkedList::unshift(mixed $value): void
}

Sommaire

add a note add a note

User Contributed Notes 3 notes

up
39
lsroudi at gmail dot com
7 years ago
the SplStack is  simply a SplDoublyLinkedList with  an iteration mode IT_MODE_LIFO and IT_MODE_KEEP
up
6
lincoln dot du dot j at gmail dot com
4 years ago
<?php
//SplStack Mode is LIFO (Last In First Out)
 
$q = new SplStack();

$q[] = 1;
$q[] = 2;
$q[] = 3;
$q->push(4);
$q->add(4,5);

$q->rewind();
while(
$q->valid()){
    echo
$q->current(),"\n";
   
$q->next();
}
?>

Output
5
4
3
2
1
up
-5
daryledesilva at gmail dot com
1 year ago
<?php

// Exercise: Implement Queue using Stacks

class MyQueue {
    protected
$queue;
   
   
/**
     * Initialize your data structure here.
     */
   
function __construct() {
       
$this->queue = new \SplStack;
    }
 
   
/**
     * Push element x to the back of queue.
     * @param Integer $x
     * @return NULL
     */
   
function push($x) {
       
$this->queue->push($x);
    }
 
   
/**
     * Removes the element from in front of queue and returns that element.
     * @return Integer
     */
   
function pop() {
       
$length = count($this->queue);
       
$temp = [];
        while(!
$this->queue->isEmpty()){
           
$rv = $this->queue->pop();
            if(!
$this->queue->isEmpty()){
               
$temp[] = $rv;
            }
        }
        for(
$i = count($temp)-1; $i >= 0; $i--){
           
$this->queue->push($temp[$i]);  
        }
        return
$rv;
    }
 
   
/**
     * Get the front element.
     * @return Integer
     */
   
function peek() {
        return
$this->queue->bottom();
    }
 
   
/**
     * Returns whether the queue is empty.
     * @return Boolean
     */
   
function empty() {
        return
$this->queue->isEmpty();
    }
}

/**
* Your MyQueue object will be instantiated and called as such:
* $obj = MyQueue();
* $obj->push($x);
* $ret_2 = $obj->pop();
* $ret_3 = $obj->peek();
* $ret_4 = $obj->empty();
*/
To Top