浅谈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 session安全问题分析
Jun 24 PHP
比较详细PHP生成静态页面教程
Jan 10 PHP
PHP间隔一段时间执行代码的方法
Dec 02 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
WordPress开发中短代码的实现及相关函数使用技巧
Jan 05 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
Nov 28 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
js装饰设计模式学习心得
2018/02/17 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
Python在线运行代码助手
2016/07/15 Python
python简单实现获取当前时间
2016/08/27 Python
python ddt实现数据驱动
2018/03/14 Python
python发送邮件脚本
2018/05/22 Python
python浪漫表白源码
2019/04/05 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
python实现双色球随机选号
2020/01/01 Python
python如何爬取动态网站
2020/09/09 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
本科毕业生的求职信范文
2013/11/20 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
国庆庆典邀请函
2015/02/02 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis