PHP实现单链表翻转操作示例
时间:2021-01-19
来源:互联网
这篇文章主要介绍了PHP链表操作,结合简单实例形式分析了php链表的定义与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了PHP链表操作。分享给大家供大家参考,具体如下:
在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已。
今天遇到的这个问题是,两个链表进行合并。
链表合并效果图
问题描述:A链表是模版链表,B链表的长度不确定,A,B二个链表结合后形成C链表。
说一下编程思想:A链表是模版链表所以在运算完成了,长度了唯一不变的。而B链表的长度是不确定的。所以可以先对B链表进行判断,分了三步:
B链表是不是为空
B链表是不是比A链表短或者相等
B链表是不是比A链表长
编程就是要列出尽可能的可能性。抓住变量,由于题目要求,当A链表和B链表相等时,直接返回B链表,所以不用考虑这个问题。
$node = array(
"nameid"=>"",
"shoolid"=>" ",
"depid"=>" ",
"start"=>" ",
"end"=>" "
);
/*
现在上面数据,有的数据存在A链表里面,有的存在B链表里面,如果都没有,用A链表的数据节点来代替。
开始第一次完成的时候,想了一个很蛋痛的方式,还用到arra_diff()函数用这个链表作差。后来仔细思考了一下。
*/
//$data 表示B链表
//$time 表示A链表
//这里为了节约资源,没开第三条链表,而是在B链表中操作,为什么要选一条不确定长度的链表
//看完你就知道为什么了
if(empty($data)) //
{
//申请节点
$data = array();
foreach($time as $value)
{
//将A链表的数据进行需求处理,组成我们需要的节点模式
$array = array("nameid"=>$value["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>"");
array_push($data,$array); //将新节点压进栈
}
}
else if(count($data)<=count($time)) //进行长度对比
{
for($i=0;$i<count($time);$i++) //for循环,不建议在for循环继续动态判断,我这里是偷懒了。
{
if(empty($data[$i]))
{
//如果数据节点空,则构建节点
$array = array("nameid"=>$time[$i]["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>"");
array_push($data,$array);
}
}
}
上面的算法就简单的实习了,将A链表的数据,和B的数据组合。
希望本文所述对大家PHP程序设计有所帮助。
-
2025年五款最好用的比特币现金(BCH)手机钱包 时间:2025-04-30
-
Web3 安全入门避坑指南(钱包被恶意多签风险分析) 时间:2025-04-30
-
比特币隔离钱包是什么?比特币隔离钱包有什么好处? 时间:2025-04-30
-
多重签名钱包是什么意思?多重签名钱包地址如何恢复? 时间:2025-04-30
-
MetaMask充值/提现/Swap/添加地址流程 时间:2025-04-30
-
什么是BTC 钱包?了解其定义、类型和用法 时间:2025-04-30
今日更新
-
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
阅读:22
-
PHP检测用户是否关闭浏览器的方法
阅读:20
-
PHP+Ajax实现的检测用户名功能简单示例
阅读:19
-
基于PHP实现用户在线状态检测
阅读:19
-
王者轮回复刻版钥匙消耗数量一览
阅读:47
-
浅谈PHP链表数据结构(单链表)
阅读:23
-
英雄联盟手游2.0版本到来拳头爸爸又来削英雄了!
阅读:24
-
lol2021新赛季新征程稀有皮肤免费领
阅读:67
-
PHP小教程之实现链表
阅读:21
-
php实现单链表的实例代码
阅读:21