php链表用法实例分析

yipeiwu_com5年前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文件包含目录配置open_basedir的使用与性能详解

1.open_basedir介绍 open_basedir 将php所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents(...

php命令行用法入门实例教程

php命令行用法入门实例教程

本文实例讲述了php命令行用法,分享给大家供大家参考。具体用法分析如下: Php是一个非常流行的web服务端脚本语言。其实,php不仅仅可以在web服务器中充当重要角色。在命令行一样可以...

php中echo()和print()、require()和include()等易混淆函数的区别

1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回fla...

PHP基于接口技术实现简单的多态应用完整实例

PHP基于接口技术实现简单的多态应用完整实例

本文实例讲述了PHP基于接口技术实现简单的多态应用。分享给大家供大家参考,具体如下: <?php //实现多态的一个简单实例 interface USB{ //接口...

PHP初学者最感迷茫的问题小结

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['f...