浅谈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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php中的登陆login
Jan 18 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 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
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
php模板原理讲解
2013/11/13 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
python浪漫表白源码
2019/04/05 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
英语生日邀请函
2014/01/23 职场文书
上班离岗检讨书
2014/09/10 职场文书
银行奉献演讲稿
2014/09/16 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Mysql Online DDL的使用详解
2021/05/20 MySQL
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS