Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menggelungkan baris gilir dalam tatasusunan php

Bagaimana untuk menggelungkan baris gilir dalam tatasusunan php

PHPz
PHPzasal
2023-04-17 16:37:22712semak imbas

PHP ialah bahasa pengaturcaraan klasik dan bahasa pentafsiran sumber terbuka. PHP boleh dibenamkan dalam HTML dan sering digunakan dalam bidang pembangunan web Ia adalah salah satu alat penting untuk pembangunan aplikasi web. PHP mempunyai banyak ciri yang berkuasa, salah satu ciri penting ialah tatasusunan. Dalam PHP, tatasusunan ialah bekas yang boleh menyimpan berbilang nilai, yang boleh daripada jenis yang sama atau jenis data yang berbeza. Dalam PHP, kita boleh menggunakan baris gilir bulat untuk melintasi elemen dalam tatasusunan Artikel ini akan memperkenalkan cara menggunakan baris gilir bulat untuk melaksanakan traversal tatasusunan.

1. Apakah itu giliran bulat?

Baris gilir ialah struktur data biasa, iaitu jadual linear khas. Dalam baris gilir, operasi pemasukan dan pemadaman elemen data hanya boleh dilakukan pada kedua-dua hujung baris gilir Kami memanggil kepala baris gilir di hadapan dan ekor baris gilir di belakang. Sekiranya tiada sekatan ruang baris gilir, panjang baris gilir boleh ditambah sewenang-wenangnya. Kelemahan yang ketara bagi baris gilir biasa ialah apabila panjang baris gilir terus berkembang, ruang di hadapan tatasusunan baris gilir berkemungkinan terbuang sia-sia Pembaziran ini harus dielakkan walaupun jumlah data adalah kecil. Barisan beratur adalah penyelesaian kepada masalah ini.

Baris gilir bulatan sebenarnya ialah jujukan bulatan Titik permulaan tatasusunan bersebelahan dengan titik akhir tatasusunan dan penuding beredar di sepanjang tatasusunan. Barisan pekeliling menghubungkan hujung hadapan (depan) dan hujung belakang (belakang) untuk membentuk cincin Apabila barisan penuh, elemen baru yang masuk akan menimpa elemen kepala barisan, sekali gus menyedari masalah kitar semula. Struktur data ini menyelesaikan masalah sisa ruang baris gilir biasa dan menggunakan sepenuhnya ruang elemen tatasusunan.

2. Pelaksanaan baris gilir pekeliling

Dalam PHP, kita boleh menggunakan tatasusunan untuk melaksanakan baris gilir pekeliling Berikut ialah contoh pelaksanaan baris gilir pekeliling:

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;
    }
}
3. Melintasi Tatasusunan Menggunakan Baris Pekeliling

Dalam PHP, kita boleh menggunakan baris gilir bulat untuk mengulangi elemen dalam tatasusunan. Tatasusunan terdiri daripada beberapa elemen, dan baris gilir bulat boleh meletakkan elemen tatasusunan ke dalam baris gilir, dan kemudian melintasi baris gilir untuk mengakses elemen tatasusunan. Berikut ialah kod sampel yang menggunakan baris gilir bulat untuk merentasi tatasusunan:

$arr = array(1,2,3,4,5);
$queue = new CircleQueue(count($arr) + 1); //初始化队列,数组元素数量+1

//将数组元素入队列
foreach($arr as $value){
    $queue->enQueue($value);
}

//使用循环队列遍历数组元素
while(!$queue->isEmpty()){
    $item = $queue->deQueue();
    echo $item . ' ';
}
Kami mula-mula mencipta tatasusunan, kemudian mencipta baris gilir bulat, dan baris gilir semua elemen dalam tatasusunan. Akhir sekali, kami menggunakan baris gilir bulat untuk melintasi elemen tatasusunan dan mencetak nilai setiap elemen, sekali gus melengkapkan traversal tatasusunan.

4. Kebaikan dan Keburukan Baris Pekeliling

Barisan Pekeliling mempunyai kelebihan berikut:

1. Menjimatkan ruang penyimpanan, menggunakan sepenuhnya ruang tatasusunan dan mengelakkan pembaziran ruang;

2. Menyelesaikan masalah penyimpanan volum data yang semakin meningkat
3. Dalam pelaksanaan giliran bulat, kerumitan masa beratur dan menyah giliran adalah O(1), dan kecekapan masa adalah tinggi.

Tetapi baris gilir bulat juga mempunyai beberapa kelemahan:

1 Kapasiti baris gilir adalah terhad dan panjang baris gilir ditetapkan Setelah jumlah data yang disimpan melebihi kapasiti baris gilir, data akan hilang ;

2. Dalam barisan Setiap ruang mesti digunakan, jika tidak, kapasiti barisan akan menjadi lebih kecil, yang juga mengehadkan fleksibiliti barisan; struktur data, baris gilir pekeliling tidak sesuai .

5. Ringkasan

Artikel ini memperkenalkan cara melintasi baris gilir pekeliling tatasusunan PHP, dan juga memperkenalkan definisi, pelaksanaan, kelebihan dan keburukan baris gilir pekeliling dan pengetahuan lain yang berkaitan. Baris pekeliling ialah konsep penting dalam struktur data Ia boleh digunakan untuk menyelesaikan masalah sisa ruang dalam baris gilir biasa, meningkatkan penggunaan ruang penyimpanan, dan meningkatkan kecekapan penyimpanan data. Dalam pembangunan sebenar, anda boleh memilih baris gilir bulat atau baris gilir biasa seperti yang diperlukan untuk menyesuaikan diri dengan senario aplikasi yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk menggelungkan baris gilir dalam tatasusunan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn