<?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;

PHP之实现双向链表(代码篇)的更多相关文章

  1. TODO:一不顺眼就换字体Go之代码篇

    TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...

  2. Netty实现高性能IOT服务器(Groza)之精尽代码篇中

    运行环境: JDK 8+ Maven 3.0+ Redis 技术栈: SpringBoot 2.0+ Redis (Lettuce客户端,RedisTemplate模板方法) Netty 4.1+ M ...

  3. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  4. C# webApi上传图片 代码篇

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 代码篇,不多说 如下: using System; using System.Collections.Generic; using System.D ...

  5. 编程算法 - 二叉搜索树 与 双向链表 代码(C++)

    二叉搜索树 与 双向链表 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目:输入一颗二叉搜索树, 将该二叉搜索树转换成一个排序的双向链表. 要求 ...

  6. 平衡二叉树,AVL树之代码篇

    看完了第一篇博客,相信大家对于平衡二叉树的插入调整以及删除调整已经有了一定的了解,下面,我们开始介绍代码部分. 首先,再次提一下使用的结构定义 typedef char KeyType; //关键字 ...

  7. phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合

    建议读者,先阅读官方文档,知晓其支付流程之后再来使用此代码,比方客户须要做什么,服务端须要做什么(非常重要!非常重要! 非常重要!),由于这几个篇幅都是纯代码篇,由于阅读前面的入门篇之后看这些应该毫无 ...

  8. phonegap(cordova) 自己定义插件代码篇(六)----android ,iOS 微信支付工具整合

    还是那句话,在使用插件代码篇的时候,请先了解插件机制(如整合原生插件先阅读原生插件文档.非常重要.非常重要!非常重要!),如未了解,请先阅读入门篇.这里就专贴关键代码 必须先把官方sdk 依照要求一步 ...

  9. mitmdump+python的使用(代码篇)

    mitmproxy+python代码篇 一.上个推文我们介绍了mitmdump的简单操作,下面我们开始学习,mitmdump配合python脚本的使用.第一点先讲日志输出.请看图片 先导入ctx模块: ...

随机推荐

  1. jquery.validate验证text,checkbox,radio,selected

    index.cshtml <form id="formLogin" method="post"> <div> <label for ...

  2. CSS的常用属性(二)

    盒子模型之边框 border-(top/bottom/left/right)-style: solid 边框的风格 如(solid 实线,dotted 点线,dashed 虚线) border-top ...

  3. wamp中的mysql服务与原来安装的mysql服务冲突的解决办法

    如果原来机器上已经安装了mysql,在安装wamp之后,打开wamp上的mysql时会打不开,或者会将原来安装的mysql服务关闭.原因是两个mysql共用了3306端口,解决办法是更改其中的一个端口 ...

  4. objectdatasouce的温故

    在做ecxel的时候,需要前台做一个联动的效果. 记录一下这个数据源的用法,大学时候用的,忘得差不多了 首先就是往页面拖拽一个objectdatasouce的控件 然后配置数据源: 选择业务对象(其实 ...

  5. CNN结构:SPP-Net为CNNs添加空间尺度卷积-神经元层

    前几个CNN检测的框架要求网络的图像输入为固定长宽,而SPP-Net在CNN结构中添加了一个实现图像金字塔功能的卷积层SPP层,用于在网络中实现多尺度卷积,由此对应多尺度输入,以此应对图像的缩放变换和 ...

  6. asp.net mvc 学习步骤

    入门篇(一) ASP.NET MVC案例教程(基于ASP.NET MVC beta) http://www.cnblogs.com/leoo2sk/archive/2008/10/27/1320285 ...

  7. marquee标签弹幕效果

    播放个视频的时候看到很有趣的弹幕,想着前端能不能做个弹幕效果.弹幕是滚动的,所以首先想到了<marquee>标签.但事实上,<marquee>标签不是w3c的标准,只是主流的浏 ...

  8. vue中需要注意的问题总结(上)

    React 与其说是一种框架,倒不如说是一种开发范式.它的核心理念非常简单: 界面/视图就是数据结构的可视化表达UI = f(data) 而界面/视图由组件组合而来UI = f1(data) + f2 ...

  9. 用Python来实现斐波那契数列.

    1).递归 def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_rec ...

  10. python 生成HTmL报告页面 V1.3 修改字体颜色

    HTML报告V1.3 根据文字内容显示不同的字体颜色: 代码如下: # -*- coding=utf-8 -*- import time,os """ V1.2 1.生成 ...