php mysql 鍊錶 PHP鍊錶操作簡單示例

2021-10-18 07:18:47 字數 1345 閱讀 7757

在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

if(empty($data[$i]))

//如果資料節點空,則構建節點

$array = array("nameid"=>$time[$i]["id"],"depid"=>$depid,"schoolid"=>$schoolid,"start"=>"","end"=>"");

array_push($data,$array);

上面的演算法就簡單的實習了,將a鍊錶的資料,和b的資料組合。

php mysql 鍊錶 php如何實現鍊錶?

php實現鍊錶的方法 首先定義乙個節點類,為 function construct val null 然後實現鍊錶的實現類,為 function construct this dummyhead new nod php實現鍊錶的方法 首先定義乙個節點類class node public val pu...

php鍊錶

class node class link public function addnode node cur next node public function linklist head new node 1 link new link head link addnode new node 2 l...

PHP實現鍊錶

目錄鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。形式 單鏈表 雙鏈表 跳表 redis 集合資料結構就是跳表實現,時間複雜度o log n 跳表了解 定義節點類 cl...