php 顺序线性表

<?php

/*
 * 线性顺序表 ,其是按照顺序在内存进行存储,出起始和结尾以外都是一一连接的(一般都是用一维数组的形式表现)
 * 
 * GetElem: 返回线性表中第$index个数据元素
 * ListLength: 返回线性表的长度
 * LocateElem: 返回给定的数据元素在线性表中的位置
 * PriorElem: 返回指定元素的前一个元素
 * NextElem: 返回指定元素的后一个元素
 * ListInsert: 在第index的位置插入元素elem
 * ListDelete: 删除第index位置的元素elem
 */

class Sequence {

    public $seqArr;
    public $length;

    public function __construct($arr) {
        $this->seqArr = $arr;
        $this->length = count($arr);
    }

    /*
     * 返回线性表中第$index个数据元素
     */

    public function GetElem($index) {
        if (($this->length) == 0 || $index < 0 || ($index > $this->length)) {
            return "Error";
        }
        return $this->seqArr[$index - 1];
    }

    /*
     * 返回线性表的长度
     *  
     */

    public function ListLength() {
        return $this->length;
    }

    /*
     * 返回给定的数据元素在线性表中的位置
     */

    public function LocateElem($elem) {
        for ($i = 0; $i < ($this->length); $i++) {
            if (($this->seqArr[$i]) == $elem) {
                return $i + 1;
            }
        }
    }

    /*
     * PriorElem: 返回指定元素的前一个元素
     */

    public function PriorElem($elem) {
        for ($i = 0; $i < ($this->length); $i++) {
            if (($this->seqArr[$i]) == $elem) {
                if ($i == 0) {
                    return "Error (is null) ";
                } else {
                    return $this->seqArr[$i - 1];
                }
            }
        }
    }

    /*
     * NextElem: 返回指定元素的后一个元素
     */

    public function NextElem($elem) {
        for ($i = 0; $i < ($this->length); $i++) {
            if (($this->seqArr[$i]) == $elem) {
                return $this->seqArr[$i + 1];
            }
        }
    }

    /*
     * ListInsert: 在第index的位置插入元素elem
     */

    public function ListInsert($index, $elem) {
        if (($this->length) == 0 || $index < 0 || $index > ($this->length)) {
            return "Error";
        }
        for ($i = $index; $i < ($this->length); $i++) {
            $this->seqArr[$i + 1] = $this->seqArr[$i];
        }
        $this->seqArr[$index] = $elem;
        $this->length = $this->length + 1;
        return $this->seqArr;
    }

    /*
     * ListDelete: 删除第index位置的元素  
     */

    public function ListDelete($index) {
        if (($this->length) == 0 || $index < 0 || $index > ($this->length - 1)) {
            return "Error";
        }
        unset($this->seqArr[$index]);
        $this->length--;   
        return $this->seqArr;
    }

}
 
?>

  

原文地址:https://www.cnblogs.com/objectboy/p/5018654.html