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代码
Apr 09 PHP
php中实现记住密码自动登录的代码
Mar 02 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
thinkphp 多表 事务详解
Jun 17 PHP
php定时执行任务设置详解
Feb 06 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
php常量详细解析
Oct 27 PHP
一个实用的php验证码类
Jul 06 PHP
php链式操作的实现方式分析
Aug 12 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 PHP
php中用unset销毁变量并释放内存
May 10 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代码质量36计
2012/09/05 PHP
php实现的SESSION类
2014/12/02 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python迭代器实例简析
2014/09/25 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Python实现随机选择元素功能
2017/09/14 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
python导入pandas具体步骤方法
2019/06/23 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
Python如何读写CSV文件
2020/08/13 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
历史系自荐信范文
2013/12/24 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
企业委托书范本
2014/09/13 职场文书