本文實例講述了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程式設計有所幫助。
更多PHP鍊錶操作簡單範例相關文章請關注PHP中文網!