class SqList
{
public $elem;
public $length;
public $size;
}
class Linear
{
const LIST_INIT_SIZE = 10;
const LIST_INCREMENT = 5;
private $list = null;
/**
* 构造一个空的线性表
*/
public function initList()
{
$this->list = new SqList();
$this->list->elem = array();
$this->list->length = 0;
$this->list->size = self::LIST_INIT_SIZE;
return true;
}
/**
* 销毁线性表
*/
public function destoryList()
{
if (is_object($this->list)) {
$this->list = null;
}
}
/**
* 是否为空表
*/
public function listEmpty()
{
if (is_object($this->list)) {
return $this->list->length == 0 ? true : false;
}
}
/**
* 返回元素个数
*/
public function listLength()
{
if (is_object($this->list)) {
return $this->list->length;
}
}
/**
* 获取指定位置的元素
*/
public function getElem($i)
{
if ($i < 1 || $i > $this->list->length + 1) {
return false;
}
return $this->list->elem[$i-1];
}
/**
* 在指定位置插入元素
*/
public function listInsert($i, $e)
{
if ($i < 1 || $i > $this->list->length + 1) {
return false;
}
if ($this->list->length >= $this->list->size) {
$this->list->size += self::LIST_INCREMENT;
}
for ($j = $this->list->length; $j >= $i; $j--) {
$this->list->elem[$j] = $this->list->elem[$j-1];
}
$this->list->elem[$i-1] = $e;
$this->list->length++;
}
/**
* 删除指定位置数据元素
*/
public function listDelete($i)
{
if ($i < 1 || $i > $this->list->length) {
return false;
}
$data = $this->list->elem[$i-1];
for ($j = $i -1; $j < $this->list->length -1; $j++) {
$this->list->elem[$j] = $this->list->elem[$j+1];
}
unset($this->list->elem[$this->list->length-1]);
$this->list->length--;
return $data;
}
}
PHP实现线性表的顺序存储结构
最新推荐文章于 2024-07-10 21:39:46 发布