本文实例讲述了PHP基于双向链表与排序操作实现的会员排名功能。分享给大家供大家参考,具体如下:
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。如果不清楚概念的请自行百度。
?php * 双向链表实现用户排行榜 * 仅用于体现思想逻辑,不具备实际参考价值 * @author 疯狂老司机 * @date 2016-07-07html' target='_blank'>class Rank{ * @var 指向前一个节点的引用 public $pre = null; * @var 指向后一个节点的引用 public $next = null; * @var 用户排行id public $id; * @var 用户名称 public $username; public function __construct($id = , $username = ){ $this- id = $id; $this- username = $username; * 添加成员节点方法 * @access public * @param obj head 初始节点 * @param obj rank 成员节点 public static function addRank($head, $rank){ $cur = $head; // 辅助节点 $isExist = false; //这是一个标志位 while($cur- next != null){ if($cur- next- id $rank- id){ break; }else if($cur- next- id == $rank- id){ $isExist = true; echo br/ 不能添加相同的id $cur = $cur- next; if(!$isExist){ if($cur- next != null){ $rank- next = $cur- next; $rank- pre = $cur; if($cur- next != null){ $cur- next- pre = $rank; $cur- next = $rank; * 删除成员节点方法 * @access public * @param obj head 初始节点 * @param obj rankid 用户排行id public static function delRank($head, $rankid){ $cur = $head- next; $isFind = flase; // 标记位 while($cur != null){ if($cur- id == $rankid){ $isFind = true; break; $cur = $cur- next; if($isFind){ if($cur- next != null){ $cur- next- pre = $cur- $cur- pre- next = $cur- next; echo br/ 要删除的成员id是 .$cur- }else{ echo br/ 要删除的成员没有 * 遍历所有节点并输出显示 * @access public * @param obj head 初始节点 public static function showRank($head){ $cur = $head- next; // 不打印空节点 while($cur- next != null){ echo br/ id= .$cur- id. . username= .$cur- username; $cur = $cur- next; echo br/ id= .$cur- id. . username= .$cur- username;//创建一个初始节点$head=new Rank();//创建一个成员$rank=new Rank(1, 老王 Rank::addRank($head,$rank);$rank=new Rank(2, 小明 Rank::addRank($head,$rank);$rank=new Rank(6, 大熊 Rank::addRank($head,$rank);$rank=new Rank(3, 静香 Rank::addRank($head,$rank);$rank=new Rank(56, 孙二娘 Rank::addRank($head,$rank);echo br/ 成员排行榜..... Rank::showRank($head);echo br/ echo br/ 删除后的成员排行榜..... Rank::delRank($head,3);Rank::showRank($head);echo br/ echo br/ 下面测试删除最前面的和最后面的成员 br/ echo br/ 删除后的成员排行榜..... Rank::delRank($head,1);Rank::showRank($head);echo br/ echo br/ 删除后的成员排行榜..... Rank::delRank($head,56);Rank::showRank($head);?
运行结果:
成员排行榜.....id=1 username=老王id=2 username=小明id=3 username=静香id=6 username=大熊id=56 username=孙二娘删除后的成员排行榜.....要删除的成员id是3id=1 username=老王id=2 username=小明id=6 username=大熊id=56 username=孙二娘下面测试删除最前面的和最后面的成员删除后的成员排行榜.....要删除的成员id是1id=2 username=小明id=6 username=大熊id=56 username=孙二娘删除后的成员排行榜.....要删除的成员id是56id=2 username=小明id=6 username=大熊
PHP实现求连续子数组最大和问题2种解决方法讲解
php获取ajax的headers方法与内容实例讲解
Laravel中使用Queue的最基本操作教程讲解
以上就是PHP基于双向链表与排序操作实现的会员排名功能示例详解的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答