数据结构之线性表——顺序存储结构(php代码实现)

发布时间:2020-06-23 19:53:07 作者:great_yonchin
来源:网络 阅读:1197
<?php
/**
 *
 * 线性表:即零个或多个数据元素的有限序列。
 * 线性表的数据结构:即数据元素依此存储在一段地址连续的存储单元内。在高级语言中就表现为数组。
 *
 * 1. DestroyList: 销毁顺序线性表
 * 2. ClearList: 将线性表重置为空
 * 3. ListEmpty: 判断线性表是否为空
 * 4. ListLength: 返回线性表的长度
 * 5. GetElem: 返回线性表中第$index个数据元素
 * 6. LocateElem: 返回给定的数据元素在线性表中的位置
 * 7. PriorElem: 返回指定元素的前一个元素
 * 8. NextElem: 返回指定元素的后一个元素
 * 9. ListInsert: 在第index的位置插入元素elem
 * 10. ListDelete: 删除第index位置的元素elem
 *
 */


class SeqStoreList {
    public $SqArr;
    public static  $length;
    public function __construct($SqArr){
        $this->SqArr=$SqArr;
        self::$length=count($SqArr);
    }
    
    //销毁顺序线性表
    public  function DestroyList(){
        $this->SqArr=null;
        self::$length=0;
    }

    //将线性表重置为空
    public  function ClearList(){
        $this->SqArr=array();
        self::$length=0;
    }
    
    //判断线性表是否为空
    public  function ListEmpty(){
        if(self::$length==0){
            return 'Is null';
        }else{
            return 'Not null';
        }
    }

    //返回线性表的长度
    public function ListLength(){
        return self::$length;
    }

    //返回线性表中第$index个数据元素
    public function GetElem($index){
        if(self::$length==0 || $index<1 || $index>self::$length){
            return 'ERROR';
        }
        return $this->SqArr[$index-1];
    }

    //返回给定的数据元素在线性表中的位置
    public function LocateElem($elem){
        for($i=0;$i<self::$length;$i++){
            if($this->SqArr[$i] == $elem){
                break;
            }
        }
        if($i>=self::$length){
            return 'ERROR';
        }
        return $i+1;
    }

    //返回指定元素的前一个元素
    public function PriorElem($cur_elem){
        for($i=0;$i<self::$length;$i++){
            if($this->SqArr[$i] == $cur_elem){
                break;
            }
        }
        if($i==0 || $i>=self::$length){
            return 'ERROR';
        }
        return $this->SqArr[$i-1];
    }

    //返回指定元素的后一个元素
    public function NextElem($cur_elem){
        for($i=0;$i<self::$length;$i++){
            if($this->SqArr[$i] == $cur_elem){
                break;
            }
        }
        if($i>=self::$length-1){
            return 'ERROR';
        }
        return $this->SqArr[$i+1];
    }

    //在第index的位置插入元素elem
    public function ListInsert($index,$elem){
        if($index<1 || $index>self::$length+1){
            return 'ERROR';
        }
        if($index<=self::$length){
            for($i=self::$length-1;$i>=$index-1;$i--){
                $this->SqArr[$i+1]=$this->SqArr[$i];
            }
        }
        $this->SqArr[$index-1]=$elem;
        self::$length++;
        return 'ok';
    }

    //ListDelete: 删除第index位置的元素elem
    public function ListDelete($index){
        if($index<1 || $index>self::$length+1){
            return 'ERROR';
        }
        if($index<self::$length){
            for($i=$index;$i<self::$length;$i++){
                $this->SqArr[$i-1]=$this->SqArr[$i];
            }
        }
        self::$length--;
        return $this->SqArr[$index-1];
    }
}


推荐阅读:
  1. 数据结构之串——顺序存储结构(php代码实现)
  2. 数据结构之队列——顺序存储结构(php代码实现——方法三)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 数据结构 线性表

上一篇:if语句判断字符串是否是空或null的方法

下一篇:前端调用GraphQL API的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》