php 线性表,PHP线性表顺序存储结构原理

线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linearlist)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。线性表:即零个或多个数据元素的有限序列。

线性表的数据结构:即数据元素依此存储在一段地址连续的存储单元内。在高级语言中就表现为数组。

1.PHP中的数组实际上是有序映射,可以当成数组,列表,散列表,字典,集合,栈,队列,不是固定的长度

2.数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了

3.想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面加上符号&

4.PHP的引用是别名,就是两个不同的变量名字指向相同的内容;“默认情况下对象是通过引用传递的”。但其实这不是完全正确的,当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝

参数解析

DestroyList:销毁顺序线性表

ClearList:将线性表重置为空

ListEmpty:判断线性表是否为空

ListLength:返回线性表的长度

GetElem:返回线性表中第$index个数据元素

LocateElem:返回给定的数据元素在线性表中的位置

PriorElem:返回指定元素的前一个元素

NextElem:返回指定元素的后一个元素

ListInsert:在第index的位置插入元素elem

ListDelete:删除第index位置的元素elem

PHP线性表顺序存储结构原理示例

class SeqStoreList {

public $SqArr;

public static $length;

public function __construct($SqArr){

$this->SqArr=$SqArr;

self::$length=count($SqArr);

}

//销毁顺序线性表

public function DestroyList(){

$this->SqArr=null;

self::$length=0;

}

//将线性表重置为空

public function ClearList(){

$this->SqArr=array();

self::$length=0;

}

//判断线性表是否为空

public function ListEmpty(){

if(self::$length==0){

return 'Is null';

}else{

return 'Not null';

}

}

//返回线性表的长度

public function ListLength(){

return self::$length;

}

//返回线性表中第$index个数据元素

public function GetElem($index){

if(self::$length==0 || $index<1 || $index>self::$length){

return 'ERROR';

}

return $this->SqArr[$index-1];

}

//返回给定的数据元素在线性表中的位置

public function LocateElem($elem){

for($i=0;$i<:>

if($this->SqArr[$i] == $elem){

break;

}

}

if($i>=self::$length){

return 'ERROR';

}

return $i+1;

}

//返回指定元素的前一个元素

public function PriorElem($cur_elem){

for($i=0;$i<:>

if($this->SqArr[$i] == $cur_elem){

break;

}

}

if($i==0 || $i>=self::$length){

return 'ERROR';

}

return $this->SqArr[$i-1];

}

//返回指定元素的后一个元素

public function NextElem($cur_elem){

for($i=0;$i<:>

if($this->SqArr[$i] == $cur_elem){

break;

}

}

if($i>=self::$length-1){

return 'ERROR';

}

return $this->SqArr[$i+1];

}

//在第index的位置插入元素elem

public function ListInsert($index,$elem){

if($index<1 || $index>self::$length+1){

return 'ERROR';

}

if($index<=self::$length){

for($i=self::$length-1;$i>=$index-1;$i--){

$this->SqArr[$i+1]=$this->SqArr[$i];

}

}

$this->SqArr[$index-1]=$elem;

self::$length++;

return 'ok';

}

//ListDelete: 删除第index位置的元素elem

public function ListDelete($index){

if($index<1 || $index>self::$length+1){

return 'ERROR';

}

if($index<:>

for($i=$index;$i<:>

$this->SqArr[$i-1]=$this->SqArr[$i];

}

}

self::$length--;

return $this->SqArr[$index-1];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值