亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

線性表(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

桂平市| 呼玛县| 鲁甸县| 清涧县| 新建县| 泾川县| 女性| 晋城| 唐海县| 尚义县| 苗栗县| 肇庆市| 湘阴县| 土默特右旗| 班玛县| 桐柏县| 科技| 肇源县| 双峰县| 玛多县| 平罗县| 正宁县| 伊吾县| 景宁| 汽车| 武定县| 简阳市| 临泽县| 五指山市| 抚顺市| 石嘴山市| 拉孜县| 桐梓县| 来凤县| 容城县| 雷波县| 临清市| 赤城县| 海口市| 垣曲县| 越西县|