程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> PHP鏈表操作

PHP鏈表操作

編輯:PHP基礎知識
 

在php中運行數據結構,基本都是用數組模擬的,只是用一直思想而已。

今天遇到的這個問題是,兩個鏈表進行合並。

鏈表合並效果圖

鏈表合並效果圖

問題描述:A鏈表是模版鏈表,B鏈表的長度不確定,A,B二個鏈表結合後形成C鏈表。鏈表結構單位是$node =

array(

"nameid"=>"",

"shoolid"=>" ",

"depid"=>" ",

"start"=>" ",

"end"=>" "

);
1

現在上面數據,有的數據存在A鏈表裡面,有的存在B鏈表裡面,如果都沒有,用A鏈表的數據節點來代替。
開始第一次完成的時候,想了一個很蛋痛的方式,還用到arra_diff()函數用這個鏈表作差。後來仔細思考了一下。
1
//$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鏈表的長度是不確定的。所以可以先對B鏈表進行判斷,分了三步
B鏈表是不是為空
B鏈表是不是比A鏈表短或者相等
B鏈表是不是比A鏈表長
編程就是要列出盡可能的可能性。抓住變量,由於題目要求,當A鏈表和B鏈表相等時,直接返回B鏈表,所以不用考慮這個問題。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved