php链表

WBOY
Freigeben: 2016-06-23 14:36:15
Original
825 Leute haben es durchsucht

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

功能类

              <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>
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage