1. 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表
  2.  
  3. 单向链表,双向链表,环形链表
  4.  
  5. PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区)
  6.  
  7. 规定:基本数据类型,一般放在栈区
  8.  
  9. 复合数据类型,比如对象,放在堆区
  10.  
  11. 定义一个类Hero
  12.  
  13. 定义成员属性排名 $no
  14.  
  15. 定义成员属性姓名 $name
  16.  
  17. 定义成员属性昵称 $nickname
  18.  
  19. 定义成员属性 $next,是一个引用,指向下一个Hero对象
  20.  
  21. 定义构造函数,传递参数:$no$name$nickname
  22.  
  23. 创建一个头head,该head只是一个头,不放入数据
  24.  
  25. 获取$head对象,new Hero()
  26.  
  27. 获取第一个Hero对象$heronew Hero(,”宋江”,”及时雨”)
  28.  
  29. 连接两个对象,$head->next=$hero
  30.  
  31. 获取第二个Hero对象$hero2new Hero(,”卢俊义”,”玉麒麟”)
  32.  
  33. 连接两个对象,$hero->next=$hero2
  34.  
  35. 遍历链表
  36.  
  37. 定义一个函数showHeros(),参数:$head对象
  38.  
  39. 定义一个临时变量$cur来存储 $head对象
  40.  
  41. while循环,条件$cur->next不为null
  42.  
  43. 打印一下
  44.  
  45. 指针后移,$cur=$cur->next
  46.  
  47. PHP版:
  48.  
  49. <?php
  50. /**
  51. * 英雄类
  52. */
  53. class Hero{
  54. public $no;
  55. public $name;
  56. public $nickname;
  57. public $next=null;
  58. public function __construct($no='',$name='',$nickname=''){
  59. $this->no=$no;
  60. $this->name=$name;
  61. $this->nickname=$nickname;
  62. }
  63. }
  64. class LinkListDemo{
  65. public static function main(){
  66. $head=new Hero();
  67. $hero1=new Hero(,"宋江","及时雨");
  68. $head->next=$hero1;
  69. $hero2=new Hero(,"卢俊义","玉麒麟");
  70. $hero1->next=$hero2;
  71. LinkListDemo::showHeros($head);
  72. }
  73. /**
  74. * 展示英雄
  75. */
  76. public static function showHeros($head){
  77. $cur=$head;
  78. while($cur->next!=null){
  79. echo "姓名:".$cur->next->name."<br/>";
  80. $cur=$cur->next;
  81. }
  82. }
  83.  
  84. }
  85.  
  86. LinkListDemo::main();
  87.  
  88.  
  89. java版:
  90.  
  91. class Hero{
  92. public int no;
  93. public String name;
  94. public String nickname;
  95. public Hero next=null;
  96. public Hero(){
  97.  
  98. }
  99. public Hero(int no,String name,String nickname) {
  100. this.no=no;
  101. this.name=name;
  102. this.nickname=nickname;
  103. }
  104.  
  105. }
  106. public class LinkListDemo {
  107. /**
  108. * @param args
  109. */
  110. public static void main(String[] args) {
  111. Hero head=new Hero();
  112.  
  113. Hero hero1=new Hero(, "宋江", "及时雨");
  114. head.next=hero1;
  115. Hero hero2=new Hero(, "卢俊义", "玉麒麟");
  116. hero1.next=hero2;
  117. showHeros(head);
  118. }
  119. /**
  120. * 展示英雄
  121. * @param head
  122. */
  123. public static void showHeros(Hero head){
  124. Hero cur=head;
  125. while(cur.next!=null){
  126. System.out.println("姓名:"+cur.next.name);
  127. cur=cur.next;
  128. }
  129. }
  130. }

[PHP] 链表数据结构(单链表)的更多相关文章

  1. C# 数据结构--单链表

    什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我.经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法.最后看些网上有关单链表的面试题代码实例. 啥是单链表? 单链表是 ...

  2. python实现数据结构单链表

    #python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...

  3. C语言数据结构-单链表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作

    1.数据结构-单链表的实现-C语言 typedef struct LNode { int data; struct LNode* next; } LNode,*LinkList; //这两者等价.Li ...

  4. C# 数据结构 - 单链表 双链表 环形链表

    链表特点(单链表 双链表) 优点:插入和删除非常快.因为单链表只需要修改Next指向的节点,双链表只需要指向Next和Prev的节点就可以完成插入和删除操作. 缺点:当需要查找某一个节点的时候就需要一 ...

  5. 数据结构——单链表java简易实现

    巩固数据结构 单链表java实现 单链表除了表尾 每个几点都有一个后继 结点有数据和后继指针组成  通过构建表头和表尾(尾部追加需要)两个特殊几点 实现单链表的一些操作,代码如下 package co ...

  6. 数据结构—单链表(类C语言描写叙述)

    单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List). 链表的详细存储表示为: ① 用一组随意的存储单元来存放线性表的结点(这组存储单元既能够是连续的.也能够是不连续的) ...

  7. python算法与数据结构-单链表(38)

    一.链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括 ...

  8. C实现通用数据结构--单链表

    单链表概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. 从概念上讲,可以把链表想象成一系列连续的元素,然而,由于这些元素是动态分配的(C语言 ...

  9. 数据结构5: 链表(单链表)的基本操作及C语言实现

    逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为线性表的链式存储. 由于分散存储,为了能够体现出数据元素之间的逻辑关 ...

  10. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

随机推荐

  1. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    拖了一个星期,终于开始写第三篇了.走起! 聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均 ...

  2. centOS7环境下安装jdk1.8

    首先下载jdk1.8  去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...

  3. python 小程序,猜年龄

    要求如下:

  4. python学习笔记9-单元测试unittest

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...

  5. castle动态代理的使用

    转自:https://blog.csdn.net/educast/article/details/6565447#动态代理的原理 原理其实很简单,就是在运行时生成新的对象,姑且叫做T,并使T继承自需要 ...

  6. C# 一般处理程序生成验证码

    using System; using System.Collections; using System.Data; using System.Linq; using System.Web; usin ...

  7. SAP笔记---非-现存任务/请求XXX上的请求锁定

    不管在SAP中的哪个系统在点击修改程序时都有可能出现以下图中的报错: 已找到解决办法,步骤如下: 1,se11中查看tlock表找到以上提到的请求号记录: 2,进入se16n,输入请求号,在事务代码输 ...

  8. luogu P3707 [SDOI2017]相关分析

    传送门 对于题目要求的东西,考虑拆开懒得拆了 ,可以发现有\(\sum x\sum y\sum x^2\sum xy\)四个变量影响最终结果,考虑维护这些值 下面记\(l,r\)为区间两端点 首先是区 ...

  9. luogu P3522 [POI2011]TEM-Temperature

    这道题暴力做法就是枚举每个起点,然后向后拓展到不能拓展 就像这样(红框是每个位置的取值范围,绿线是你取的值构成的折线) 应该可以发现,左端点往右移的过程中,右端点也只能不动或往右移,所以我们可以每次移 ...

  10. The folder can’t be opened because you don’t have permission to see its contents.

    1 自己在windows上面copy过去的文件夹,在Mac下面无法查看 一开始以为是windows文件的权限问题,然后 自己赋予了everyone所有的权限,结果在Mac上面还是无法打开文件夹 2 最 ...