<?php
/**
* PHP之实现双向链表
*/
class Hero{ public $pre=null;
public $no;
public $name;
public $next=null; public function __construct($no='',$name=''){
$this->no=$no;
$this->name=$name;
} static public function addHero($head,$hero){
$isExist=false;
//判断目前这个链表是否为空
if($head->next==null){
$head->next=$hero;
$hero->pre=$head;
}else{
//如果不是空链表,则按排名来添加
//找到添加的位置
while($head->next!=null){
if($head->next->no > $hero->no){
break;
}elseif($head->next->no == $hero->no){
$isExist=true;
echo "<br>不能添加相同的编号";
}else{
$head=$head->next;
}
}
if(!$isExist){
if($head->next!=null){
$hero->next=$head->next;
$hero->next->pre=$hero;
}
$hero->pre=$head;
$head->next=$hero;
}
}
} //遍历
static public function showHero($head){
while($head->next!=null){
echo "<br>编号:".$head->next->no."名字:".$head->next->name;
$head=$head->next;
}
} static public function delHero($head,$herono){
$isFind=false;
while($head!=null){
if($head->no==$herono){
$isFind=true;
break;
}
//继续找
$head=$head->next;
}
if($isFind){
if($head->next!=null){
$head->next->pre=$head->pre;
}
$head->pre->next=$head->next;
}else{
echo "<br>没有找到目标";
}
}
} $head = new Hero();
$hero1 = new Hero(1,'1111');
$hero3 = new Hero(3,'3333');
$hero2 = new Hero(2,'2222'); Hero::addHero($head,$hero1);
Hero::addHero($head,$hero3);
Hero::addHero($head,$hero2);
Hero::showHero($head); Hero::delHero($head,2);
Hero::showHero($head);
exit;

最新文章

  1. Win10 UWP开发实现Bing翻译
  2. Java中Set Map List 的区别
  3. FastUI快速界面原型制作工具
  4. 清除浮动2-父元素设置overflow:hidden
  5. HDU 4588 Count The Carries (数学,计数)
  6. Ajax 介绍
  7. java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇
  8. PHP学习之-1.2 认识PHP脚本标识
  9. 3D动画效果照片墙demo
  10. AsyncTask用法解析-下载文件动态更新进度条
  11. Redis-配置认证密码
  12. (NO.00002)iOS游戏精灵战争雏形(七)
  13. Linux文件系统及常用命令
  14. ganglia使用nagios告警
  15. Mac下Tomcat安装与Intellij IDEA配置Tomcat
  16. List遍历三种方法:1.for 2.增强性for 3.迭代器
  17. Linux系统管理员应该知道的journalctl知识
  18. C++中public、protected、private的差别
  19. Visual Studio 2015新添加宏
  20. C# Js 时间格式化问题

热门文章

  1. ASP之ViewState和IsPostBack
  2. 在mac上截屏的几种方式
  3. Java基础12一IO流
  4. C# 根据空格数截取
  5. Memcached 之增删改查命令
  6. 关于图片和auido预加载
  7. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
  8. day35-2 类的三大特性---多态,以及菱形继承问题
  9. Let's Encrypt,免费好用的 HTTPS 证书
  10. 域名IP绑定