1. 程式人生 > >2.1 順序存儲結構

2.1 順序存儲結構

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 順序存儲結構