1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php购票排位_PHP基于双向链表与排序操作实现的会员排名功能示例

php购票排位_PHP基于双向链表与排序操作实现的会员排名功能示例

时间:2022-04-22 12:56:40

相关推荐

php购票排位_PHP基于双向链表与排序操作实现的会员排名功能示例

本文实例讲述了PHP基于双向链表与排序操作实现的会员排名功能。分享给大家供大家参考,具体如下:

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。如果不清楚概念的请自行百度。

/**

* 双向链表实现用户排行榜

*

* 仅用于体现思想逻辑,不具备实际参考价值

* @author 疯狂老司机

* @date -07-07

*/

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'

不能添加相同的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->pre;

}

$cur->pre->next = $cur->next;

echo '

要删除的成员id是'.$cur->id;

}else{

echo'

要删除的成员没有';

}

}

/**

* 遍历所有节点并输出显示

*

* @access public

* @param obj head 初始节点

*/

public static function showRank($head){

$cur = $head->next; // 不打印空节点

while($cur->next != null){

echo'

id='.$cur->id.' '.'username='.$cur->username;

$cur = $cur->next;

}

echo'

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 '

成员排行榜.....';

Rank::showRank($head);

echo'

';

echo '

删除后的成员排行榜.....';

Rank::delRank($head,3);

Rank::showRank($head);

echo'

';

echo'

下面测试删除最前面的和最后面的成员

';

echo '

删除后的成员排行榜.....';

Rank::delRank($head,1);

Rank::showRank($head);

echo'

';

echo '

删除后的成员排行榜.....';

Rank::delRank($head,56);

Rank::showRank($head);

?>

运行结果:

成员排行榜.....

id=1 username=老王

id=2 username=小明

id=3 username=静香

id=6 username=大熊

id=56 username=孙二娘

删除后的成员排行榜.....

要删除的成员id是3

id=1 username=老王

id=2 username=小明

id=6 username=大熊

id=56 username=孙二娘

下面测试删除最前面的和最后面的成员

删除后的成员排行榜.....

要删除的成员id是1

id=2 username=小明

id=6 username=大熊

id=56 username=孙二娘

删除后的成员排行榜.....

要删除的成员id是56

id=2 username=小明

id=6 username=大熊

希望本文所述对大家PHP程序设计有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。