浅谈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 相关文章推荐
smarty基础之拼接字符串的详解
Jun 18 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
PHP中file_exists()判断中文文件名无效的解决方法
Nov 12 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
详解Window7 下开发php扩展
Dec 31 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
Yii2验证器(Validator)用法分析
Jul 23 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
PHP脚本的10个技巧(8)
2006/10/09 PHP
PHP分页显示制作详细讲解
2006/12/05 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python实现截屏的函数
2015/07/25 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
师范生自我鉴定范文
2013/10/05 职场文书
新闻专业推荐信范文
2013/11/20 职场文书
初中地理教学反思
2014/01/11 职场文书
校园之星获奖感言
2014/01/29 职场文书
村干部承诺书
2014/03/28 职场文书
市场部经理岗位职责
2014/04/10 职场文书
科学发展观活动总结
2014/08/28 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers