php 實現鍊錶的排序

2021-10-24 04:57:55 字數 953 閱讀 3968

leetcode 148: 排序乙個無序鍊錶

說明:

1. 通過快慢指標找到鍊錶的中間位置,low 表示右邊鍊錶;2. 左邊鍊錶理解起來就比較費事了。

左邊鍊錶:因為物件賦值是引用拷貝。所以,當 low 變化的時候,head 會記錄變化,通過 low->next = null 終止變化,得到左鍊錶。

2. 然後再通過有序鍊錶的合併完成排序

/**

* definition for a singly-linked list.

* class listnode

* }*/class solution

// 讓 fast 提前走兩步,在while 中讓low fast 相差一步,最後讓 low 多走一步保持兩步的距離。保證 low 拿到中位數

$fast = $head->next->next;

$low = $head;

// $recoder = $head;

// recoder 指標記錄 low 的訪問的記錄,引用傳遞給head

while($fast && $fast->next)

// 終止 head 的 next 指標

// $recoder->next = null;

$r = $this->sortlist($low->next);

$low->next = null;

$l = $this->sortlist($head);

return $this->merge($r, $l);

}function merge($l1, $l2)

else

$head = $head->next;

}$head->next = $l1 ? $l1 : $l2;

return $l->next;

}}

PHP實現鍊錶

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

PHP 實現鍊錶

設計鍊錶,鍊錶的每個節點都是乙個物件,每個節點都應具備乙個val和乙個next引用。鍊錶節點 class node 鍊錶 class mylinkedlist 獲取鍊錶的乙個節點,如果不存在或者大於鍊錶長度則返回 1 param integer index return integer functi...

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

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