数据构造线性表代码
线性表是n个数据特征雷同的元素的构成有限序列,是最基本且经常运用的一种线性构造(线性表,栈,行列,串和数组都是线性构造),同时也是其他数据构造的基本。
关于非空的线性表或许线性构造的特性:
(1)存在唯一的一个被称作“第一个”的数据元素;
(2)存在唯一的一个被称作“末了一个”的数据元素;
(3)除第一个外,构造中的每一个数据元素均只需一个先驱;
(4)除末了一个外,构造中的每一个数据元素均只需一个后继;
线性表构造递次示意(递次表)
观点:用一组地点一连的存储单元顺次存储线性表的数据元素,这类存储构造的线性表称为递次表。
特性:逻辑上相邻的数据元素,物理序次也是相邻的。
只需肯定好了存储线性表的肇端位置,线性表中任一数据元素都可以随机存取,所以线性表的递次存储构造是一种随机存取的贮存构造,由于高等语言中的数组范例也是有随机存取的特征,所以一般我们都运用数组来形貌数据构造中的递次贮存构造,用动态分配的一维数组示意线性表。
下面是用php来完成数据构造线性表(递次表)的代码:
<?php class ArrayList{ private $list; private $size; public function __construct() { $this->list=array(); $this->size=0; } //初始化链表 public function InitList(){ $this->list=array(); $this->size=0; } //删除链表 public function destoryList(){ if (isset($this->list)){ unset($this->list); $this->size=0; } } //清空链表 public function clearList(){ if (isset($this->list)){ unset($this->list); } $this->list=array(); $this->size=0; } //推断链表是不是为空 public function emptyList(){ if (isset($this->list)){ if ($this->size==0){ return true; }else{ return false; } } } //链表长度 public function lengthList(){ if (isset($this->list)){ return $this->size; }else{ return false; } } //取元素 public function getElem($i){ if ($i<1||$i>$this->size){ die('failed'); } if (isset($this->list)&&is_array($this->list)){ return $this->list[$i-1]; } } //是不是在链表中 public function locateElem($e){ if (isset($this->list)&&is_array($this->list)){ for ($i=0;$i<$this->size;$i++){ if ($this->list[$i]==$e){ return $i+1; } return 0; } } } //先驱 public function priorElem($i){ if ($i<1||$i>$this->size){ die('failed'); } if ($i==1){ die('no prior'); } if (isset($this->list)&&is_array($this->list)){ return $this->list[$i-2]; } } //后继 public function nextElem($i){ if ($i<1||$i>$this->size){ die('failed'); } if ($i==$this->size){ die('no next'); } if (isset($this->list)&&is_array($this->list)){ return $this->list[$i]; } } //插进去元素 public function insertList($i,$e){ if ($i<1||$i>$this->size){ die('failed'); } if (isset($this->list)&&is_array($this->list)){ if ($this->size==0){ $this->list[0]=$e; $this->size++; }else{ for($j=$this->size-1;$j>=$i;$j--){ $this->list[$j]=$this->list[$j-1]; } $this->list[$i-1]=$e; $this->size++; } } } //删除元素 public function deleteList($i){ if ($i<1||$i>$this->size){ die('failed'); } if (isset($this->list)&&is_array($this->list)){ if ($i==$this->size){ unset($this->list[$i-1]); }else{ unset($this->list[$i-1]); for ($j=$i;$j<$this->size;$j++){ $this->list[$j-1]=$this->list[$j]; } } $this->size--; } } //遍历 public function printList(){ if (isset($this->list)&&is_array($this->list)){ foreach ($this->list as $value) { echo $value.' '; } } } }
更多PHP相干学问,请接见ki4网!
以上就是数据构造线性表代码的细致内容,更多请关注ki4网别的相干文章!