Heim  >  Artikel  >  Backend-Entwicklung  >  Datenstruktur linearer Tabellencode

Datenstruktur linearer Tabellencode

angryTom
angryTomOriginal
2019-11-01 09:19:304285Durchsuche

Datenstruktur linearer Tabellencode

Datenstruktur linearer Tabellencode

Eine lineare Tabelle ist eine endliche Folge von n Elementen mit denselben Dateneigenschaften Es handelt sich um die grundlegendste und am häufigsten verwendete lineare Struktur (lineare Listen, Stapel, Warteschlangen, Zeichenfolgen und Arrays sind alle lineare Strukturen) und bildet auch die Grundlage für andere Datenstrukturen.

Merkmale nicht leerer linearer Tabellen oder linearer Strukturen:

(1) Es gibt nur ein Datenelement namens „das erste“; ein Datenelement namens „letztes“; (3) Außer dem ersten hat jedes Datenelement in der Struktur nur einen Vorgänger

(4) Außer dem letzten; Jedes Datenelement in der Struktur hat nur einen Nachfolger.

Lineare Tabellenstruktur-Sequenzdarstellung (sequentielle Tabelle)

Konzept: Verwendung einer Gruppe von Speichereinheiten mit aufeinanderfolgenden Adressspeichern die Datenelemente einer linearen Tabelle nacheinander. Die lineare Tabelle dieser Speicherstruktur wird als sequentielle Tabelle bezeichnet. Merkmale: Logisch benachbarte Datenelemente sind auch in physischer Reihenfolge benachbart.

Solange die Startposition der linearen Tabelle bestimmt ist, kann auf jedes Datenelement in der linearen Tabelle zufällig zugegriffen werden, sodass die sequentielle Speicherstruktur der linearen Tabelle eine Speicherstruktur mit wahlfreiem Zugriff ist, da sie fortgeschritten ist Der Array-Typ in der Sprache weist auch Direktzugriffseigenschaften auf. Daher verwenden wir normalerweise Arrays, um die sequentielle Speicherstruktur in der Datenstruktur zu beschreiben, und verwenden dynamisch zugewiesene eindimensionale Arrays, um lineare Tabellen darzustellen.

Das Folgende ist der Code zur Verwendung von PHP zur Implementierung einer Datenstruktur-Lineartabelle (sequentielle Tabelle):

<?php
class ArrayList{
    private $list;
    private $size;
    public function __construct()
    {
        $this->list=array();
        $this->size=0;
    }
    //初始化链表
    public function InitList(){
        $this->list=array();
        $this->size=0;
    }
    //删除链表
    public function destoryList(){
        if (isset($this->list)){
            unset($this->list);
            $this->size=0;
        }
    }
    //清空链表
    public function clearList(){
        if (isset($this->list)){
            unset($this->list);
        }
        $this->list=array();
        $this->size=0;
    }
    //判断链表是否为空
    public function emptyList(){
        if (isset($this->list)){
            if ($this->size==0){
                return true;
            }else{
                return false;
            }
        }
    }
    //链表长度
    public function lengthList(){
        if (isset($this->list)){
            return $this->size;
        }else{
            return false;
        }
    }
    //取元素
    public function getElem($i){
        if ($i<1||$i>$this->size){
            die(&#39;failed&#39;);
        }
        if (isset($this->list)&&is_array($this->list)){
            return $this->list[$i-1];
        }
    }
    //是否在链表中
    public function locateElem($e){
        if (isset($this->list)&&is_array($this->list)){
            for ($i=0;$i<$this->size;$i++){
                if ($this->list[$i]==$e){
                    return $i+1;
                }
                return 0;
            }
        }
    }
    //前驱
    public function priorElem($i){
        if ($i<1||$i>$this->size){
            die(&#39;failed&#39;);
        }
        if ($i==1){
            die(&#39;no prior&#39;);
        }
        if (isset($this->list)&&is_array($this->list)){
            return $this->list[$i-2];
        }
    }
    //后继
    public function nextElem($i){
        if ($i<1||$i>$this->size){
            die(&#39;failed&#39;);
        }
        if ($i==$this->size){
            die(&#39;no next&#39;);
        }
        if (isset($this->list)&&is_array($this->list)){
            return $this->list[$i];
        }
    }
    //插入元素
    public function insertList($i,$e){
        if ($i<1||$i>$this->size){
            die(&#39;failed&#39;);
        }
        if (isset($this->list)&&is_array($this->list)){
            if ($this->size==0){
                $this->list[0]=$e;
                $this->size++;
            }else{
                for($j=$this->size-1;$j>=$i;$j--){
                    $this->list[$j]=$this->list[$j-1];
                }
                $this->list[$i-1]=$e;
                $this->size++;
            }
        }
    }
    //删除元素
    public function deleteList($i){
        if ($i<1||$i>$this->size){
            die(&#39;failed&#39;);
        }
        if (isset($this->list)&&is_array($this->list)){
            if ($i==$this->size){
                unset($this->list[$i-1]);
            }else{
                unset($this->list[$i-1]);
                for ($j=$i;$j<$this->size;$j++){
                    $this->list[$j-1]=$this->list[$j];
                }
            }
            $this->size--;
        }
    }
    //遍历
    public function printList(){
        if (isset($this->list)&&is_array($this->list)){
            foreach ($this->list as $value) {
                echo $value.&#39; &#39;;
            }
        }
    }
}

Weitere PHP-bezogene Kenntnisse finden Sie auf der

PHP-Chinese-Website

!

Das obige ist der detaillierte Inhalt vonDatenstruktur linearer Tabellencode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn