PHP鏈表操作簡(jiǎn)單示例
本文實(shí)例講述了PHP鏈表操作。分享給大家供大家參考,具體如下:
在php中運(yùn)行數(shù)據(jù)結(jié)構(gòu),基本都是用數(shù)組模擬的,只是用一直思想而已。
今天遇到的這個(gè)問(wèn)題是,兩個(gè)鏈表進(jìn)行合并。
鏈表合并效果圖
問(wèn)題描述:A鏈表是模版鏈表,B鏈表的長(zhǎng)度不確定,A,B二個(gè)鏈表結(jié)合后形成C鏈表。
說(shuō)一下編程思想:A鏈表是模版鏈表所以在運(yùn)算完成了,長(zhǎng)度了唯一不變的。而B(niǎo)鏈表的長(zhǎng)度是不確定的。所以可以先對(duì)B鏈表進(jìn)行判斷,分了三步:
B鏈表是不是為空
B鏈表是不是比A鏈表短或者相等
B鏈表是不是比A鏈表長(zhǎng)
編程就是要列出盡可能的可能性。抓住變量,由于題目要求,當(dāng)A鏈表和B鏈表相等時(shí),直接返回B鏈表,所以不用考慮這個(gè)問(wèn)題。
$node = array( "nameid"=>"", "shoolid"=>" ", "depid"=>" ", "start"=>" ", "end"=>" " ); /* 現(xiàn)在上面數(shù)據(jù),有的數(shù)據(jù)存在A鏈表里面,有的存在B鏈表里面,如果都沒(méi)有,用A鏈表的數(shù)據(jù)節(jié)點(diǎn)來(lái)代替。 開(kāi)始第一次完成的時(shí)候,想了一個(gè)很蛋痛的方式,還用到arra_diff()函數(shù)用這個(gè)鏈表作差。后來(lái)仔細(xì)思考了一下。 */ //$data 表示B鏈表 //$time 表示A鏈表 //這里為了節(jié)約資源,沒(méi)開(kāi)第三條鏈表,而是在B鏈表中操作,為什么要選一條不確定長(zhǎng)度的鏈表 //看完你就知道為什么了 if(empty($data)) // { //申請(qǐng)節(jié)點(diǎn) $data = array(); foreach($time as $value) { //將A鏈表的數(shù)據(jù)進(jìn)行需求處理,組成我們需要的節(jié)點(diǎn)模式 $array = array("nameid"=>$value["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>""); array_push($data,$array); //將新節(jié)點(diǎn)壓進(jìn)棧 } } else if(count($data)<=count($time)) //進(jìn)行長(zhǎng)度對(duì)比 { for($i=0;$i<count($time);$i++) //for循環(huán),不建議在for循環(huán)繼續(xù)動(dòng)態(tài)判斷,我這里是偷懶了。 { if(empty($data[$i])) { //如果數(shù)據(jù)節(jié)點(diǎn)空,則構(gòu)建節(jié)點(diǎn) $array = array("nameid"=>$time[$i]["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>""); array_push($data,$array); } } }
上面的算法就簡(jiǎn)單的實(shí)習(xí)了,將A鏈表的數(shù)據(jù),和B的數(shù)據(jù)組合。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語(yǔ)法入門(mén)教程》、《php操作office文檔技巧總結(jié)(包括word,excel,access,ppt)》、《php日期與時(shí)間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php數(shù)據(jù)結(jié)構(gòu)之順序鏈表與鏈?zhǔn)骄€(xiàn)性表示例
- php線(xiàn)性表順序存儲(chǔ)實(shí)現(xiàn)代碼(增刪查改)
- php線(xiàn)性表的入棧與出棧實(shí)例分析
- PHP+MySQL統(tǒng)計(jì)該庫(kù)中每個(gè)表的記錄數(shù)并按遞減順序排列的方法
- php實(shí)現(xiàn)單鏈表的實(shí)例代碼
- PHP小教程之實(shí)現(xiàn)鏈表
- 淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)
- PHP小教程之實(shí)現(xiàn)雙向鏈表
- PHP實(shí)現(xiàn)單鏈表翻轉(zhuǎn)操作示例
- PHP環(huán)形鏈表實(shí)現(xiàn)方法示例
- php實(shí)現(xiàn)的順序線(xiàn)性表示例
相關(guān)文章
PHP中date()日期函數(shù)有關(guān)參數(shù)整理
PHP中date()日期函數(shù)有關(guān)參數(shù)整理,需要的朋友可以參考下。2011-07-07如何用PHP websocket實(shí)現(xiàn)網(wǎng)頁(yè)實(shí)時(shí)聊天
websocket作為HTML5里一個(gè)新的特性一直很受人關(guān)注,因?yàn)樗娴姆浅??,打破了http“請(qǐng)求-響應(yīng)”的常規(guī)思維,實(shí)現(xiàn)了服務(wù)器向客戶(hù)端主動(dòng)推送消息,本文介紹如何使用PHP和JS應(yīng)用websocket實(shí)現(xiàn)一個(gè)網(wǎng)頁(yè)實(shí)時(shí)聊天室。2021-05-05PHP+Mysql基于事務(wù)處理實(shí)現(xiàn)轉(zhuǎn)賬功能的方法
這篇文章主要介紹了PHP+Mysql基于事務(wù)處理實(shí)現(xiàn)轉(zhuǎn)賬功能的方法,實(shí)例分析了mysql事務(wù)處理的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07thinkphp中多表查詢(xún)中防止數(shù)據(jù)重復(fù)的sql語(yǔ)句(必看)
下面小編就為大家?guī)?lái)一篇thinkphp中多表查詢(xún)中防止數(shù)據(jù)重復(fù)的sql語(yǔ)句(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09PHP實(shí)現(xiàn)更新中間關(guān)聯(lián)表數(shù)據(jù)的兩種方法
這篇文章主要介紹了PHP實(shí)現(xiàn)更新中間關(guān)聯(lián)表數(shù)據(jù)的兩種方法,在進(jìn)行多表操作時(shí)比較有參考價(jià)值,需要的朋友可以參考下2014-09-09thinkphp 手機(jī)號(hào)和用戶(hù)名同時(shí)登錄
本文主要介紹了實(shí)現(xiàn)手機(jī)號(hào)和用戶(hù)名同時(shí)登錄的方法。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01使用PHP提取視頻網(wǎng)站頁(yè)面中的FLASH地址的代碼
這幾天工作中需要寫(xiě)個(gè)程序?qū)τ谝粋€(gè)視頻網(wǎng)站地址,如優(yōu)酷的某個(gè)地址,提取出其中的FLASH地址來(lái)。2010-04-04無(wú)需重新編譯php加入ftp擴(kuò)展的解決方法
本文為大家介紹無(wú)需重新編譯php加入ftp擴(kuò)展的方法,有需要的朋友可以參考下2013-02-02PHP實(shí)現(xiàn)對(duì)站點(diǎn)內(nèi)容外部鏈接的過(guò)濾方法
這篇文章主要介紹了PHP實(shí)現(xiàn)對(duì)站點(diǎn)內(nèi)容外部鏈接的過(guò)濾方法,可實(shí)現(xiàn)針對(duì)外部鏈接增加rel="nofollow"的功能,有助于網(wǎng)站SEO建設(shè)以及避免不必要的損失,是非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09