欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php链表

程序员文章站 2024-02-04 20:31:34
...
之前在博客园搜索发现没有用php实现的链表,在百度也几乎没有!所以在这把代码贴上来!

这段代码我认为有些缺陷,是什么呢?就是类型的约束不够严格!php本身是弱类型的语言!

所以在这一块有些迷茫了!忘指点!本人系新手!

下面是代码

节点类

              

class Node{ private $Data; // 节点数据 private $Next; // 下一节点 public function setData($value){ $ this -> Data = $value; } public function setNext($value){ $ this -> Next = $value; } public function getData(){ return $ this -> Data; } public function getNext(){ return $ this -> Next; } public function __construct($data,$next){ $ this -> setData($data); $ this -> setNext($next); } }

功能类

              

class LinkList{ private $header; // 头节点 private $size; // 长度 public function getSize(){ $i = 0 ; $node = $ this -> header; while ($node -> getNext() != null ) { $i ++ ; $node = $node -> getNext(); } return $i; } public function setHeader($value){ $ this -> header = $value; } public function getHeader(){ return $ this -> header; } public function __construct(){ header( " content-type:text/html; charset=utf-8 " ); $ this -> setHeader( new Node( null , null )); } /* * *@author MzXy *@param $data--要添加节点的数据 * */ public function add($data) { $node = $ this -> header; while ($node -> getNext() != null ) { $node = $node -> getNext(); } $node -> setNext( new Node($data, null )); } /* * *@author MzXy *@param $data--要移除节点的数据 * */ public function removeAt($data) { $node = $ this -> header; while ($node -> getData() != $data) { $node = $node -> getNext(); } $node -> setNext($node -> getNext()); $node -> setData($node -> getNext() -> getData()); } /* * *@author MzXy *@param 遍历 * */ public function get () { $node = $ this -> header; if ($node -> getNext() == null ){ print( " 数据集为空! " ); return ; } while ($node -> getNext() != null ) { print($node -> getNext() -> getData()); if ($node -> getNext() -> getNext() == null ){ break ;} $node = $node -> getNext(); } } /* * *@author MzXy *@param $data--要访问的节点的数据 * @param 此方法只是演示不具有实际意义 * */ public function getAt($data) { $node = $ this -> header -> getNext(); if ($node -> getNext() == null ){ print( " 数据集为空! " ); return ; } while ($node -> getData() != $data) { if ($node -> getNext() == null ){ break ;} $node = $node -> getNext(); } return $node -> getData(); } /* * *@author MzXy *@param $value--需要更新的节点的原数据 --$initial---更新后的数据 * */ public function update($initial,$value) { $node = $ this -> header -> getNext(); if ($node -> getNext() == null ){ print( " 数据集为空! " ); return ; } while ($node -> getData() != $data) { if ($node -> getNext() == null ){ break ;} $node = $node -> getNext(); } $node -> setData($initial); } }

相关标签: php链表