Maison > développement back-end > tutoriel php > Analyse pratique des algorithmes PHP et des structures de données

Analyse pratique des algorithmes PHP et des structures de données

WBOY
Libérer: 2024-06-02 13:52:56
original
557 Les gens l'ont consulté

Analyse pratique des algorithmes PHP et des structures de données : Array : Une structure de données ordonnée qui utilise des index pour accéder aux éléments. Stack : Dernier entré, premier sorti (LIFO), géré à l'aide des méthodes push(), pop() et isEmpty(). File d'attente : premier entré, premier sorti (FIFO), exploitée à l'aide de la classe SplQueue et des méthodes enqueue(), dequeue() et isEmpty(). Liste chaînée : structure de données linéaire qui stocke les éléments à l'aide d'un pointeur vers le nœud suivant, gérée à l'aide de la classe SplDoublyLinkedList et des méthodes add(), remove() et getFirst().

Analyse pratique des algorithmes PHP et des structures de données

Analyse pratique des algorithmes et des structures de données PHP

Avant-propos
Les algorithmes et les structures de données sont des fondements cruciaux de la programmation et ils affectent l'efficacité et les performances du programme. Cet article approfondira l'application pratique des algorithmes PHP et des structures de données, et vous aidera à comprendre et à maîtriser ces concepts fondamentaux à travers des cas spécifiques.

Arrays
Un tableau PHP est une structure de données ordonnée qui utilise l'indexation pour accéder aux éléments. Nous pouvons utiliser des fonctions de tableau standard, telles que array_push(), array_pop() et array_shift(), pour manipuler des tableaux. array_push()array_pop()array_shift(),来操作数组。


栈是一种后进先出的(LIFO)数据结构。我们可以使用SPLStack类来创建和管理栈,利用其方法,如push()pop()isEmpty()

队列
队列是一种先进先出的(FIFO)数据结构。PHP提供了SplQueue类,可以用来创建一个队列,并使用enqueue()dequeue()isEmpty()方法进行操作。

链表
链表是一种线性数据结构,它将元素存储在节点中,每个节点都包含指向下一个节点的指针。我们可以使用SplDoublyLinkedList类来创建和管理链表,并使用其方法,如add()remove()getFirst()

StackLa pile est une structure de données dernier entré, premier sorti (LIFO). Nous pouvons utiliser la classe SPLStack pour créer et gérer des piles, en utilisant ses méthodes telles que push(), pop() et isEmpty ( ).

Queue

Queue est une structure de données premier entré, premier sorti (FIFO). PHP fournit la classe SplQueue, qui peut être utilisée pour créer une file d'attente et utiliser enqueue(), dequeue() et isEmpty( ) méthode à utiliser.

Liste chaînée

Une liste chaînée est une structure de données linéaire qui stocke des éléments dans des nœuds, chaque nœud contenant un pointeur vers le nœud suivant. Nous pouvons utiliser la classe SplDoublyLinkedList pour créer et gérer des listes chaînées et utiliser ses méthodes telles que add(), remove() et getFirst().

Cas pratiques🎜🎜🎜🎜Cas 1 : Utiliser la pile pour déterminer si les parenthèses correspondent🎜🎜
function isBalanced($str)
{
    $stack = new SplStack();
    $brackets = [
        '(' => ')',
        '{' => '}',
        '[' => ']',
    ];

    foreach (str_split($str) as $char) {
        if (array_key_exists($char, $brackets)) {
            $stack->push($char);
        } elseif (!empty($stack) && $brackets[$stack->pop()] == $char) {
            continue;
        } else {
            return false;
        }
    }

    return $stack->isEmpty();
}
Copier après la connexion
🎜🎜Cas 2 : Utiliser la file d'attente pour implémenter le système de traitement des messages🎜🎜
class Queue
{
    private $queue = [];

    public function enqueue($item)
    {
        $this->queue[] = $item;
    }

    public function dequeue()
    {
        return array_shift($this->queue);
    }

    public function isEmpty()
    {
        return empty($this->queue);
    }
}

// 使用队列实现消息处理
$queue = new Queue();
$queue->enqueue('Message 1');
$queue->enqueue('Message 2');
$queue->enqueue('Message 3');

while (!$queue->isEmpty()) {
    $message = $queue->dequeue();
    // 处理消息...
}
Copier après la connexion
🎜🎜Cas 3 : Utiliser la liste chaînée pour trouver des anneaux🎜🎜
class ListNode
{
    public $val;
    public $next = null;

    public function __construct($val)
    {
        $this->val = $val;
    }
}

function hasCycle($head)
{
    $slow = $head;
    $fast = $head;

    while ($fast !== null && $fast->next !== null) {
        $slow = $slow->next;
        $fast = $fast->next->next;

        if ($slow === $fast) {
            return true;
        }
    }

    return false;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal