php链表用法实例分析


Posted in PHP onJuly 09, 2015

本文实例讲述了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 相关文章推荐
我的论坛源代码(六)
Oct 09 PHP
php桌面中心(二) 数据库写入
Mar 11 PHP
php intval的测试代码发现问题
Jul 27 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php中stream(流)的用法
Mar 25 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
php unlink()函数使用教程
Jul 12 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
php结合curl实现多线程抓取
Jul 09 #PHP
php基本函数汇总
Jul 09 #PHP
php+curl 发送图片处理代码分享
Jul 09 #PHP
在Debian系统下配置LNMP的教程
Jul 09 #PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 #PHP
php将html转成wml的WAP标记语言实例
Jul 08 #PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 #PHP
You might like
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
layui文件上传实现代码
2017/05/20 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
职业生涯规划书前言
2014/04/15 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
导游词之无锡古运河
2019/11/14 职场文书