php链表

WBOY
WBOY원래의
2016-06-23 14:36:15819검색

之前在博客园搜索发现没有用php实现的链表,在百度也几乎没有!所以在这把代码贴上来!

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

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

下面是代码

节点类

              <p class="sycode">              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); } }              </p>

功能类

              <p class="sycode">              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);  }  }              </p>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 5.2.1다음 기사:PHP的Foreach