浅谈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 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
一个简单的PHP入门源程序
Oct 09 PHP
php正则校验用户名介绍
Jul 19 PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 PHP
第五章 php数组操作
Dec 30 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
php生成短域名函数
Mar 23 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP可变函数学习小结
Nov 29 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
原生js二级联动效果
2017/06/20 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
python多线程并发实例及其优化
2019/06/27 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
解决Mac下使用python的坑
2019/08/13 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
个人剖析材料及整改措施
2014/10/07 职场文书
个人债务授权委托书
2014/10/17 职场文书
离婚协议书范本
2015/01/26 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
交通处罚决定书
2015/06/24 职场文书
工作感想范文
2015/08/07 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
python-for x in range的用法(注意要点、细节)
2021/05/10 Python