链表——最灵活的数据结构
链表用来解决复杂的问题和算法是很方便的。

内容介绍
1.什么是链表
2.单向链表
3.双向链表
4.环形链表
5.使用环形链表解决约瑟夫问题

链表——什么是链表
链表是有序的列表,但是它在内存中是分散存储的。

链表无处不在,比如在操作系统中,文件和文件之间,文件块和文件块之间,是靠链表链接起来的。
使用链表可以解决类似约瑟夫问题,排序,索引,二叉树,广义表...

链表——单链表的快速入门
使用head头的单向链表实现——水浒英雄排行榜管理

使用php语言来实现,如果是c#/c/c++/java,思路是完全一样的。

现在我们看看链表是怎样的一种数据结构呢?->内存图分析

singleLink.php


[php]

  1. <html>  

  2.     <head>  

  3.         <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  

  4.     </head>  

  5.     <body>  

  6.         <h1>单向链表完成英雄排行管理</h1>  

  7.         <hr/>  

  8.         <a href="#">查询英雄</a>  

  9.         <a href="#">添加英雄</a>  

  10.         <a href="#">删除英雄</a>  

  11.         <a href="#">修改英雄</a>  

  12.           

  13.         <?php  

  14.             //首先需要基础知识。知道什么是变量,有一些面向对象编程基础。  

  15.             //知道三大控制语句 if for while  

  16.               

  17.             //定义英雄类  

  18.             class Hero{  

  19.                 public $no;//排名  

  20.                 public $name;//真实名字  

  21.                 public $nickname;//外号  

  22.                 public $next;//$next是一个引用,指向另外一个Hero的对象实例。  

  23.   

  24.                 //构造函数  

  25.                 public function __construct($no='',$name='',$nickname=''){  

  26.                     //赋值  

  27.                     $this->no=$no;  

  28.                     $this->name=$name;  

  29.                     $this->nickname=$nickname;  

  30.                 }  

  31.             }  

  32.             //因为有些同学,对PHP语法有点不熟,我演示一下  

  33.             //创建一个英雄  

  34.             $hero=new Hero(1,'宋江','及时雨');  

  35.   

  36.             //echo 输出  

  37.             echo $hero->name;  

  38.         ?>  

  39.     </body>  

  40. </html>  

内存分析图


图片大,在新窗口中打开图片,观看完整图片

PHP的底层是c,当一个程序运行的时候,内存分成五个区[栈区/堆区/全局区/常量区/代码区]
程序一旦运行,东西在这五个区里是怎样分布的,要非常的清楚,否则的话就是一团雾水。
c/c++/java她们的内存分析图一般情况下也是这么画的,因为这是最底层的东西。