2.1 順序存儲結構
阿新 • • 發佈:2018-10-16
char urn isset turn this 最後一個元素 如果 array header
下面用php實現線性表的順序存儲結構
<?php header("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 --; } } } ?>
我們可以來驗證一下我們寫的函數
<?php header("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 順序存儲結構