浅谈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 strtotime函数详解
Dec 18 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 PHP
php制作中间带自己定义图片二维码的方法
Jan 27 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
详解Window7 下开发php扩展
Dec 31 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
php生出随机字符串
Jul 06 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 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
PHPlet在Windows下的安装
2006/10/09 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
浅谈js中的bind
2019/03/18 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
基于python实现从尾到头打印链表
2019/11/02 Python
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
技术学校毕业生求职信分享
2013/12/02 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
会计学习心得体会
2014/09/09 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
Python实现为PDF去除水印的示例代码
2022/04/03 Python