浅谈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使用DES进行加密与解密的方法详解
Jun 06 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
Yii学习总结之安装配置
Feb 22 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
python url 参数修改方法
2018/12/26 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
惠普香港官方商店:HP香港
2019/04/30 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
行政人员工作职责
2013/12/05 职场文书
社会实践活动总结报告
2014/04/29 职场文书
小学三年级作文之写景
2019/11/05 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
Java集成swagger文档组件
2021/06/28 Java/Android
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby