91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

線性表(1):線性表順序存儲結構的php實現

發布時間:2020-06-03 11:50:10 來源:網絡 閱讀:955 作者:GIpanda 欄目:web開發

線性表的順序存儲結構 (sequential list),也叫順序表中,存和讀數據時間復雜度為 O(1),插入和刪除數據時間復雜度為 O(n)。


線性表優點:

1.無需為表中元素之間的邏輯關系而額外增加存儲空間

2.可以快速存取表中任一位置的元素


線性表缺點:

1.插入和刪除操作需要移動大量元素

2.當線性表長度變化較大時,難以確定存儲空間的容量 (這個對 php 不是問題,而且貌似php只能申請動態數組。。。)

3.造成存儲空間的碎片


下面是 php 的實現

<?php 
/**
 * @author Dongjie LIU
 * @version chinese
 * 
 *順序表 (sequential list):線性表的順序存儲結構
 *需要3個屬性,數組,最大存儲容量,線性表長度,
 *但由于php 特性,無法在初始化時定義數組長度,
 *故只定義數組一個屬性
 * 
 * 線性表基本操作包括
 * 1.線性表表初始化操作 __contruct()
 * 2.清空線性表 __destruct()
 * 3.判斷線性表是否為空 listEmpty()
 * 4.返回線性表元素個數 listLength()
 * 5.根據下標返回線性表中的某個元素 getElem()
 * 6.返回線性表中某個元素的位置 locateElem()
 * 7.根據給定位置在線性表中插入元素 listInsert()
 * 8.根據給定位置在線性表中刪除元素 listDelete()
 */

class seqList{

    private $seq_list; //順序表

    /**
     * 順序表初始化
     * 
     * @param mixed $seq_list
     * @return void
     */
    public function __construct($seq_list=array()){
    	$this->seq_list = $seq_list;
    }

    /**
     * 清空順序表
     * 
     * @return void
     */
    public function __destruct(){
        unset($this->seq_list);
    }

    /**
     * 判斷順序表是否為空
     *
     * @return bool 為空返回true,否則返回false
     */
    public function listEmpty(){
        return empty($this->seq_list);
    }

    /**
     * 返回順序表元素個數
     *
     * @return int
     */
    public function listLength(){
    	return count($this->seq_list);
    }
    
    /**
     * 返回順序表中下標為i的元素值
     * 
     * @param int i 
     * @return mixed 如找到返回元素值,否則返回false
     */
    public function getElem($i){
        if ($i > 0 && $i <= $this->listLength()) {
        	return $this->seq_list[$i-1];
        }else{
        	return false;
        }
    }

    /**
     * 在順序表中查找與給定值 $value 相等的元素,
     * 這里沒有考慮 $value 為數組的情況
     *
     * @param mixed $value
     * @return mixed 如查找成功,返回該元素在表中序號,否則返回 0
     */
    public function locateElem($value){
    	if (in_array($value, $this->seq_list)) {
    		$i = 0;
            foreach ($this->seq_list as $key=>$val) {
            	if (strcmp($value, $val) === 0){
            		//若存在多個元素與匹配值相等
            		if ($i == 0) {
            			$i = $key + 1;
            		}else{
                        $i .= ",".($key + 1);
            		}
            	}
  
            }
            return $i;

    	}else{
    		return false;
    	}
    }

    /**
     * 在指定位置 i 插入一個新元素 $value
     *
     * @param int $i
     * @param mixed $value
     * @return bool 插入成功返回 true, 否則返回 false
     */
    public function listInsert($i, $value){
    	//三種情況:插入位置不合理,元素加在末尾和其他
        if ($i > $this->listLength()+1 || $i < 1) {
        	return false;
        }elseif ($i == $this->listLength()+1) {
        	$this->seq_list[$i-1] = $value;
        }else{
        	//從 $i-1 到最后的元素位置向后移動一位
            for ($k = $this->listLength()-1; $k >= $i-1; $k--) {
                $this->seq_list[$k+1] = $this->seq_list[$k];
            }
            $this->seq_list[$i-1] = $value;
        }

        return true;
    }

    /**
     * 刪除順序表中 i 位置的元素, 并用 $value 返回其值
     * 
     * @param int $i 
     * @return mixed 刪除成功返回 $value,否則返回 false
     */
    public function listDelete($i){
    	//兩種情況:插入位置不合理和其他
        if ($i <= 0 || $i > $this->listLength()) {
        	return false;
        }else{
        	$value = $this->seq_list[$i-1];
        	for ($k=$i-1; $k < $this->listLength()-1; $k++) { 
        		$this->seq_list[$k] = $this->seq_list[$k+1];
        	}
        	unset($this->seq_list[$this->listLength()-1]);

        	return $value;        	
        }
    }

}

?>


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

徐闻县| 望城县| 叙永县| 江西省| 白银市| 北票市| 承德县| 子洲县| 临朐县| 吴江市| 治多县| 泰宁县| 西乌珠穆沁旗| 阿城市| 谢通门县| 进贤县| 儋州市| 灵丘县| 丰城市| 古交市| 穆棱市| 长沙市| 翼城县| 建昌县| 九江县| 怀宁县| 东乡县| 静安区| 政和县| 光泽县| 宿迁市| 凌海市| 乳源| 新源县| 武冈市| 郑州市| 金华市| 永年县| 平武县| 梅州市| 岳普湖县|