浅谈PHP链表数据结构(单链表)


Posted in PHP onJune 08, 2016

链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表

单向链表,双向链表,环形链表

PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区)

规定:基本数据类型,一般放在栈区

复合数据类型,比如对象,放在堆区

定义一个类Hero

定义成员属性排名 $no

定义成员属性姓名 $name

定义成员属性昵称 $nickname

定义成员属性 $next,是一个引用,指向下一个Hero对象

定义构造函数,传递参数:$no,$name,$nickname

创建一个头head,该head只是一个头,不放入数据

获取$head对象,new Hero()

获取第一个Hero对象$hero,new Hero(1,”宋江”,”及时雨”)

连接两个对象,$head->next=$hero

获取第二个Hero对象$hero2,new Hero(2,”卢俊义”,”玉麒麟”)

连接两个对象,$hero->next=$hero2

遍历链表

定义一个函数showHeros(),参数:$head对象

定义一个临时变量$cur来存储 $head对象

while循环,条件$cur->next不为null

打印一下

指针后移,$cur=$cur->next

PHP版:

<?php
/**
* 英雄类
*/
class Hero{
  public $no;
  public $name;
  public $nickname;
  public $next=null;
  public function __construct($no='',$name='',$nickname=''){
    $this->no=$no;
    $this->name=$name;
    $this->nickname=$nickname;
  }
}
class LinkListDemo{
  public static function main(){
    $head=new Hero();
    $hero1=new Hero(1,"宋江","及时雨");
    $head->next=$hero1;
    $hero2=new Hero(2,"卢俊义","玉麒麟");
    $hero1->next=$hero2;
    LinkListDemo::showHeros($head);
  }
  /**
  * 展示英雄
  */
  public static function showHeros($head){
    $cur=$head;
    while($cur->next!=null){
      echo "姓名:".$cur->next->name."<br/>";
      $cur=$cur->next;
    }
  }

}

LinkListDemo::main();

java版:

class Hero{
    public int no;
    public String name;
    public String nickname;
    public Hero next=null;
    public Hero(){
      
    }
    public Hero(int no,String name,String nickname) {
      this.no=no;
      this.name=name;
      this.nickname=nickname;
    }

  }
public class LinkListDemo {
  /**
   * @param args
   */
  public static void main(String[] args) {
    Hero head=new Hero();
    
    Hero hero1=new Hero(1, "宋江", "及时雨");
    head.next=hero1;
    Hero hero2=new Hero(2, "卢俊义", "玉麒麟");
    hero1.next=hero2;
    showHeros(head);
  }
  /**
   * 展示英雄
   * @param head
   */
  public static void showHeros(Hero head){
    Hero cur=head;
    while(cur.next!=null){
      System.out.println("姓名:"+cur.next.name);
      cur=cur.next;
    }
  }
}

以上这篇浅谈PHP链表数据结构(单链表)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
PHP4之COOKIE支持详解
Oct 09 PHP
PHP 操作文件的一些FAQ总结
Feb 12 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
php实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
用php来限制每个ip每天浏览页面数量的实现思路
Feb 24 PHP
php生成图片缩略图的方法
Apr 07 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 #PHP
WordPress分页伪静态加html后缀
Jun 08 #PHP
php 流程控制switch的简单实例
Jun 07 #PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 #PHP
PHP session 会话处理函数
Jun 06 #PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 #PHP
PHP编写的图片验证码类文件分享
Jun 06 #PHP
You might like
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
PHP 实现重载
2021/03/09 PHP
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
python3.5的包存放的具体路径
2020/08/16 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
法人授权委托书范本
2014/04/04 职场文书
五年级学生评语
2014/04/22 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
关于保护环境的标语
2014/06/09 职场文书
白莲教口号
2014/06/18 职场文书
开会通知
2015/04/20 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS