本文實例講述了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 $html' target='_blank'>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追加內容到txt文件中的方法
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答