php链表

WBOY
WBOYasal
2016-06-23 14:36:15819semak imbas

之前在博客园搜索发现没有用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>

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:PHP 5.2.1Artikel seterusnya:PHP的Foreach