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 相关文章推荐
PHP和.net中des加解密的实现方法
Feb 27 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
php解决约瑟夫环示例
Apr 09 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP框架性能测试报告
May 08 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 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
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
限制复选框的最大可选数
2006/07/01 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python基本socket通信控制操作示例
2019/01/30 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
Java基础知识面试要点
2016/07/29 面试题
客户服务经理岗位职责
2014/01/29 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
家属答谢词
2015/01/05 职场文书
让世界充满爱观后感
2015/06/10 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle