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