您的位置:首页 > 理论基础 > 数据结构算法

PHP数据结构练习笔记--线性表

2013-10-03 21:08 429 查看
1.类中变量直接调用和$this->调用不同

2.清空数组array方法:

  A unset() 释放资源,这个array变量就没有了

  B $arr=array() 重新赋值,将原有的变量赋值给一个新的空数组

线性表类--最终代码

<?php
//线性表类
class MyList{

//变量:数组、长度
private $arr;
private $length;

//构造函数
function __construct()
{
$this->arr=array();
$this->length=0;
echo "初始化:";
//echo $arr;
}

//析构函数
function __destruct()
{
unset($this->arr);
echo "释放资源";
}

//在指定位置插入元素(第二个参数为空时,默认在表最后插入)
function ListInsert($data,$poi='-1')
{
if($poi=='-1')
{
array_push($this->arr,$data);
}
else if($poi>0)
{
array_splice($this->arr,$poi-1,0,$data);
}
}

//输出线性表
function ListTraverse()
{
print_r($this->arr);
}

//输出线性表长度
function ListLength()
{
$this->length=count($this->arr);
echo "   长度:".$this->length;
}

//清空线性表
function ListClear()
{
echo "清空表:";
unset($this->arr);
$this->arr=array();
}

//判断线性表是否为空
function ListEmpty()
{
if($this->length==0)
{
echo "   空";
return false;
}
else{
echo "   非空";
return true;
}
}

//获取线性表指定位置的数据
function GetElem($poi)
{
if($poi>$this->length||$poi<=0)
{
return false;
}
else{
return $this->arr[$poi-1];
}

}

//定位第一个与指定数据相等的元素位置(即下表+1)
function LocateElem($data)
{
if(in_array($data,$this->arr)){
for($i=0;$i<$this->length;$i++)
{
if($this->arr[$i]==$data)
{
return $i;
break;
}
else{
continue;
}
}
}
else{
return -1;
}
}

//返回指定数据的前驱
function PriorElem($cur)
{
if($this->LocateElem($cur)==0)
{
return false;
}
else if($this->LocateElem($cur)>0)
{
$location=$this->LocateElem($cur);
return $this->arr[$location-1];
}
else if($this->LocateElem($cur)==-1)
{
return -1;
}
}

//返回指定数据的后继
function NextElem($cur)
{
if($this->LocateElem($cur)==($this->length-1))
{
return false;
}
else if($this->LocateElem($cur)>0)
{
$location=$this->LocateElem($cur);
return $this->arr[$location+1];
}
else if($this->LocateElem($cur)==-1)
{
return -1;
}
}

function ListDelete($poi)
{
if($poi<1||$poi>$this->length)
{
return false;
}
else{
$res=$this->arr[$poi-1];
unset($this->arr[$poi-1]);
return $res;
}
}
}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: