首頁  >  文章  >  後端開發  >  PHP鍊錶操作簡單案例

PHP鍊錶操作簡單案例

墨辰丷
墨辰丷原創
2018-05-31 17:21:391601瀏覽

這篇文章主要介紹了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的數據組合。

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關建議:

php5.5.12 下除錯SOAP 封包錯誤資訊 

PHP中HTMLPurifier防XSS攻擊

PHP中實作無限級分類

##

以上是PHP鍊錶操作簡單案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn