php实现数据结构线性表(链式)
来源:互联网 发布:js调用高德地图api 编辑:程序博客网 时间:2024/06/14 06:52
<?phpclass LinkList{ private $head; private $size; private $list; public function __construct() { $this->head=''; $this->size=0; $this->list=array(); } public function initList(){ $this->head=''; $this->size=0; $this->list=array(); } //删除链表 public function destoryList(){ if (isset($this->list)&&isset($this->head)){ unset($this->list); unset($this->head); } } //清空链表 public function clearList(){ if (isset($this->list)){ unset($this->list); } $this->list=array(); $this->size=0; $this->head=''; } //判断链表是否为空 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)){ $j=1; //头指针 $tmp=$this->head; while ($i>$j){ if ($this->list[$tmp]['next']!=null){ $tmp=$this->list[$tmp]['next']; $j++; } } return $this->list[$tmp]['data']; } } //是否在链表中 public function locateElem($e){ if (isset($this->list)&&is_array($this->list)){ $tmp=$this->head; while ($this->list[$tmp]['data']!=$e){ if ($this->list[$tmp]['next']!=null){ $tmp=$this->list[$tmp]['next']; }else{ return false; } } return true; } } //前驱 public function priorElem($i){ if ($i<1||$i>$this->size){ die('failed'); } if ($i==1){ die('no prior'); } $tmp=$this->head; $j=1; while ($i>$j+1){ if ($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } return $this->list[$tmp]['data']; } //后继 public function nextElem($i){ if ($i<1||$i>$this->size){ die('failed'); } if ($i==$this->size){ die('no next'); } $tmp=$this->head; $j=1; while ($i>$j){ if ($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } return $this->list[$tmp]['data']; } //插入元素:后插法 public function insertList($i,$e){ if (isset($this->list)&&is_array($this->list)){ //空表 if ($this->size==0){ $this->head=$this->uuid(); $this->list[$this->head]['data']=$e; $this->list[$this->head]['next']=null; }else{ if ($i<1||$i>$this->size){ die('failed'); } $tmp=$this->head; $j=1; while ($i>$j){ if ($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } $find=$tmp; $id=$this->uuid(); if ($this->list[$find]['next']==null){ //尾部 $this->list[$find]['next']=$id; $this->list[$id]['data']=$e; $this->list[$id]['next']=null; $this->size++; } else{ //中间 $this->list[$id]['next']=$this->list[$find]['next']; $this->list[$find]['next']=$id; $this->list[$id]['data']=$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==1){ $this->head=$this->list[$this->head]['next']; }else{ $tmp=$this->head; $j=1; while ($i>$j+1){ if ($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } //找到删除元素的前驱 $find=$tmp; //删除的元素 if ($this->list[$tmp]['next']!=null){ //不是最后一个元素 $delete=$this->list[$find]['next']; $this->list[$find]['next']=$this->list[$delete]['next']; }else{ $this->list[$tmp]['next']=null; } } } } public function tracerstList(){ $tmp=$this->head; while ($this->list[$tmp]['next']!=null){ $this->printList($this->list[$tmp]['data'],true); $tmp=$this->list[$tmp]['next']; } $this->printList($this->list[$tmp]['data'],false); } public function printList($str,$flag){ if ($flag){ echo $str.'->'; }else{ echo $str.'<br/>'; } } //uuid 唯一码 public function uuid($prefix=''){ $chars=md5(uniqid(mt_rand(),true)); $uuid=substr($chars,0,8).'-'; $uuid.=substr($chars,0,8).'-'; $uuid.=substr($chars,8,4).'-'; $uuid.=substr($chars,12,4).'-'; $uuid.=substr($chars,16,4).'-'; $uuid.=substr($chars,20,12); return $prefix.$uuid; }}
0 0
- php实现数据结构线性表(链式)
- 数据结构--线性表(顺序实现,链式实现,多项式计算)
- 《数据结构》线性表的链式表示和实现(三)
- 数据结构---线性表的链式表示和实现(一)
- 数据结构---线性表的链式表示和实现(二)
- 数据结构---线性表的链式实现
- 数据结构-链式线性表基本操作实现
- 数据结构 -->线性表的链式实现 ADT
- C - 数据结构 - 线性表 - 链式实现
- PHP实现线性表的链式存储
- php实现数据结构线性表(顺序)
- 数据结构 C语言实现 线性表的链式实现
- 链式线性表实现
- 数据结构之链式线性表
- 数据结构—线性表的链式表示和实现
- 数据结构---线性表的链式表示与实现
- 数据结构学习----线性表的链式表示(Java实现)
- 线性表的链式表示和实现(数据结构)
- createQuery is not valid without active transaction
- 递推递归练习 O
- ListView学习笔记
- neutron安全组功能点梳理总结
- Andrew Ng机器学习课程笔记
- php实现数据结构线性表(链式)
- 类和对象
- Blogs Links
- linux内核不发(Router Solicit)RS报文问题
- POJ
- URAL
- Opencv学习---霍夫变换检测圆的基本原理
- Bulbs 【模拟】or 【set】
- 第二部分 自动内存管理机制