php链表用法实例分析

5年以前  |  阅读数:537 次  |  编程语言:PHP 

本文实例讲述了php链表用法。分享给大家供大家参考。具体如下:

这里简单介绍了php链表的基本用法,包括链表节点的创建、遍历、更新等操作。


    <?php
    /**
     * @author MzXy
     * @copyright 2011
     * @param 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程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例