ホームページ  >  記事  >  バックエンド開発  >  データ構造線形テーブルコード

データ構造線形テーブルコード

angryTom
angryTomオリジナル
2019-11-01 09:19:304452ブラウズ

データ構造線形テーブルコード

#データ構造線形テーブル コード

線形テーブルは、同じデータ特性を持つ n 個の要素の有限シーケンスです。これは最も基本的で一般的に使用される線形構造 (線形リスト、スタック、キュー、文字列、配列はすべて線形構造です) であり、他のデータ構造の基礎でもあります。

空ではない線形テーブルまたは線形構造の特性:

(1) 「first」と呼ばれるデータ要素は 1 つだけあります;

( 2) 存在するのは 1 つだけです「最後」と呼ばれるデータ要素;

(3) 最初のものを除いて、構造内の各データ要素には先行要素が 1 つだけあります;

(4) 最後の要素を除き、それぞれ構造内のデータ要素には後続が 1 つだけあります;

線形テーブル構造シーケンス表現 (シーケンシャル テーブル)

概念: 使用連続したアドレスを持つストレージ ユニットのグループに、線形テーブルのデータ要素を順番に並べたもので、このような記憶構造の線形テーブルをシーケンシャルテーブルと呼びます。

特徴: 論理的に隣接するデータ要素は、物理的な順序でも隣接します。

線形テーブルの開始位置が決定されている限り、線形テーブル内の任意のデータ要素にランダムにアクセスできるため、線形テーブルの順次記憶構造はランダム アクセス記憶構造です。この言語の配列型にはランダム アクセスの特性もあるため、通常は配列を使用してデータ構造内の順次記憶構造を記述し、動的に割り当てられる 1 次元配列を使用して線形テーブルを表現します。

以下は、PHP を使用してデータ構造線形テーブル (順序テーブル) を実装するコードです:

<?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;;
            }
        }
    }
}

PHP 関連の詳細については、

PHP 中国語 Web サイト##を参照してください。 #!

以上がデータ構造線形テーブルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。