Maison  >  Article  >  développement back-end  >  Comment boucler la file d'attente dans un tableau php

Comment boucler la file d'attente dans un tableau php

PHPz
PHPzoriginal
2023-04-17 16:37:22628parcourir

PHP est un langage de programmation classique et un langage de script interprété open source. PHP peut être intégré au HTML et est souvent utilisé dans le domaine du développement Web. C'est l'un des outils importants pour le développement d'applications Web. PHP possède de nombreuses fonctionnalités puissantes, l’une des fonctionnalités importantes étant les tableaux. En PHP, un tableau est un conteneur pouvant stocker plusieurs valeurs, qui peuvent être du même type ou de types de données différents. En PHP, nous pouvons utiliser une file d'attente circulaire pour parcourir les éléments d'un tableau. Cet article explique comment utiliser une file d'attente circulaire pour implémenter la traversée d'un tableau.

1. Qu'est-ce qu'une file d'attente circulaire ?

La file d'attente est une structure de données commune, qui est un tableau linéaire spécial. Dans la file d'attente, les opérations d'insertion et de suppression d'éléments de données ne peuvent être effectuées qu'aux deux extrémités de la file d'attente. Nous appelons la tête de file d'attente et la queue de file d'attente. En l'absence de restrictions d'espace dans la file d'attente, la longueur de la file d'attente peut être augmentée arbitrairement. Nous appelons cela une file d'attente normale. Un inconvénient majeur des files d'attente ordinaires est que, à mesure que la longueur de la file d'attente continue de croître, l'espace devant le tableau de files d'attente risque d'être gaspillé, même lorsque la quantité de données est faible. Les files d'attente circulaires sont une solution à ce problème.

Une file d'attente circulaire est en fait une séquence circulaire. Le point de départ du tableau est adjacent au point final du tableau et le pointeur circule le long de ce tableau. La file d'attente circulaire relie le front-end (avant) et le back-end (arrière) pour former un anneau lorsque la file d'attente est pleine, les nouveaux éléments entrants écraseront l'élément de tête de la file d'attente, réalisant ainsi le problème de recyclage. Cette structure de données résout le problème de gaspillage d'espace des files d'attente ordinaires et utilise pleinement l'espace des éléments du tableau.

2. Implémentation de files d'attente circulaires

En PHP, nous pouvons utiliser des tableaux pour implémenter des files d'attente circulaires

En PHP, nous pouvons utiliser la file d'attente circulaire pour parcourir les éléments d'un tableau. Un tableau est composé de plusieurs éléments, et une file d'attente circulaire peut placer les éléments du tableau dans la file d'attente, puis parcourir la file d'attente pour accéder aux éléments du tableau. Voici un exemple de code qui utilise une file d'attente circulaire pour parcourir un tableau :

class CircleQueue {
    private $front; //队头指针
    private $rear; //队尾指针
    private $queueSize; //队列大小
    private $maxSize; //队列容量
    private $queue; //队列数组 

    public function __construct($maxSize){
        $this->maxSize = $maxSize;
        $this->front = 0;
        $this->rear = 0;
        $this->queueSize = 0;
        $this->queue = array();
    }
    
    public function enQueue($item){ //入队操作
        if($this->isFull()){
            return false;
        }else{
            $this->queue[$this->rear] = $item; //加入队列
            $this->rear = ($this->rear+1) % $this->maxSize; //队尾指针加1,如果超过了容量,就回到最开始(也就是第一个元素的位置)
            $this->queueSize++;
            return true;
        }
    }
    
    public function deQueue(){ //出队操作
        if($this->isEmpty()){
            return false;
        }else{
            $item = $this->queue[$this->front]; //取出队头元素
            $this->front = ($this->front+1) % $this->maxSize; //队头指针加1,如果超过了容量,就回到最开始(也就是第一个元素的位置)
            $this->queueSize--;
            return $item;
        }
    }
    
    public function isEmpty(){ //判断队列是否为空
        return $this->queueSize == 0;
    }
    
    public function isFull(){ //判断队列是否已满
        return $this->queueSize == $this->maxSize;
    }
    
    public function size(){ //获取队列大小
        return $this->queueSize;
    }
    
    public function getQueue(){ //获取队列数组
        return $this->queue;
    }
}

Nous créons d'abord un tableau, puis créons une file d'attente circulaire et mettons tous les éléments du tableau en file d'attente. Enfin, nous utilisons une file d'attente circulaire pour parcourir les éléments du tableau et imprimer la valeur de chaque élément, complétant ainsi le parcours du tableau.

4. Avantages et inconvénients de la file d'attente circulaire

La file d'attente circulaire présente les avantages suivants :

1. Économisez de l'espace de stockage, utilisez pleinement l'espace de la baie et évitez de gaspiller de l'espace ; volume de données croissant ;

3. Dans la mise en œuvre d'une file d'attente circulaire, la complexité temporelle d'entrée et de sortie de la file d'attente est O(1), ce qui est une efficacité temporelle élevée.


Mais les files d'attente circulaires présentent également certains inconvénients :

1. La capacité de la file d'attente est limitée et la longueur de la file d'attente est fixe Une fois que la quantité de données stockées dépasse la capacité de la file d'attente, les données seront perdues ; la file d'attente doit être utilisée, sinon la file d'attente La capacité deviendra plus petite, ce qui limite également la flexibilité de la file d'attente

3 Les données de la file d'attente circulaire sont relativement limitées. Pour certaines structures de données complexes, la file d'attente circulaire n'est pas adaptée.

5. Résumé

Cet article présente comment parcourir les files d'attente circulaires des tableaux PHP, et présente également la définition, la mise en œuvre, les avantages et les inconvénients des files d'attente circulaires et d'autres connaissances connexes. La file d'attente circulaire est un concept important dans la structure des données. Elle peut être utilisée pour résoudre le problème du gaspillage d'espace dans les files d'attente ordinaires, améliorer l'utilisation de l'espace de stockage et améliorer l'efficacité du stockage des données. Dans le développement réel, vous pouvez choisir une file d'attente circulaire ou une file d'attente normale selon vos besoins pour vous adapter aux différents scénarios d'application.

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!

Déclaration:
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