线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
优点:
(1)无需为表中元素之间的逻辑关系而增加额外的存储空间
(2)可以快速的存取表中的任一位置的元素
缺点:
(1)插入和删除需要移动大量元素
(2)当线性表长度变化较大时,难以确定存储空间的容量
(3)造成存储空间的“碎片”
下面用php实现线性表的顺序存储结构
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 --; } }}?>
我们可以来验证一下我们写的函数
getElement($i); echo $num; echo "";}//在第二个位置插入元素66$linear_list->listInsert(2,66);print_r($linear_list); echo "";
//删除第二个元素66 $linear_list->listDelete(2); print_r($linear_list); ?>
最后的结果是这样的