標籤:sse ade list list() php clear new 元素 err
下面用php實現線性表的順序儲存結構
<?phpheader("content-type:text/html;charset=utf-8");/** * 順序表基本操作 * *包括 *1.順序表的初始化 __contruct() *2.清空順序表 clearList() *3.根據下標返回順序表中的某個元素 getElement() *4.在指定位置插入一個新的結點 listInsert() *5.在指定的位置刪除元素listDelete() */class Linner_list{ public $linner_list; public $size;//1.順序表的初始化 __contruct() function __construct($linner_list,$size) { $this->linner_list =$linner_list; $this->size = $size; }//2.清空順序表 clearList()public function clearList(){ if(isset($this->linner_list)){ unset($this->linner_list); }else{ $this->linner_list = array(); $this->size=0; }}//3.根據下標返回順序表中的某個元素 getElement()//將線性表中第i個位置的元素返回,只要i的數值在下標範圍內,就是把數組第i-1下標的值返回即可 public function getElement($i){ if($this->size==0 || $i<1 || $i>$this->size){ echo "error"; return false; } if(isset($this->linner_list)&&is_array($this->linner_list)){ return $this->linner_list[$i-1]; } }//4.插入操作//線上性表中第i個位置之前插入新的資料元素,線性表的長度+1/* * (1) 如果插入位置不合理,拋出異常 * (2)如果線性表的長度大於數組長度,則拋出異常或者動態增加容量 * (3)從最後一個元素開始向前遍曆到第i個位置,分別將他們都向後移動一個位置 * (4)將要插入的元素填入i處 * (5)表長加1 */ public function listInsert($i,$element){ if($i<1 || $i>$this->size){ echo "error"; return false; } // $this->size ++; if(isset($this->linner_list)&&is_array($this->linner_list)){ if ($this->size==0){ $this->linner_list[0]=$element; $this->size++; }else{ for($j = $this->size-1;$j>=$i-1;$j--){ $this->linner_list[$j+1] = $this->linner_list[$j]; } $this->linner_list[$i-1] = $element; $this->size ++; } } } //5.刪除操作 //刪除線性表中第i個位置的元素,線性表的長度-1 /* * (1) 如果刪除位元置不合理,拋出異常 * (2)取出刪除的元素 * (3)從最後一個元素開始向前遍曆到第i個位置,分別將他們都向後移動一個位置 * (4)表長減1 */ public function listDelete($i){ if($i<1 || $i>$this->size){ echo "error"; return false; } if(isset($this->linner_list)&&is_array($this->linner_list)){ for($j = $i;$j<$this->size;$j++){ $this->linner_list[$j-1] = $this->linner_list[$j]; } $this->size --; } }}?>
我們可以來驗證一下我們寫的函數
<?phpheader("content-type:text/html;charset=utf-8");include ‘linear_list.class.php‘;$array = array(1,2,3,4,5,6,7,8,9,10);$size = 10;$linear_list = new Linner_list($array,$size);//擷取元素for ($i=1;$i<=$size;$i++){ $num = $linear_list->getElement($i); echo $num; echo "</br>";}//在第二個位置插入元素66$linear_list->listInsert(2,66);print_r($linear_list);
echo "</br>";
//刪除第二個元素66
$linear_list->listDelete(2);
print_r($linear_list);
?>
最後的結果是這樣的
2.1 順序儲存結構