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令牌 Token改进版
Jul 18 PHP
PHP修改session_id示例代码
Jan 08 PHP
php全角字符转换为半角函数
Feb 07 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
php中使用GD库做验证码
Mar 31 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php获取文件大小的方法
2014/02/26 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
python 字符串split的用法分享
2013/03/23 Python
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
优秀员工自荐书
2013/12/19 职场文书
分公司负责人任命书
2014/06/04 职场文书
国贸专业求职信
2014/06/28 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
目标责任书格式范文
2015/05/11 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏