JavaScriptでチェーン操作を実現-17 Iterate Reverse
884 ワード
TL;DR
チェーンを循環的に反転させ、シリーズのディレクトリを先頭とディレクトリに合わせます.
需要
インプリメンテーション方法
コードは以下の通りです
参考資料
Codewars Kata GitHubのコードはGitHubのテストを実現します.
チェーンを循環的に反転させ、シリーズのディレクトリを先頭とディレクトリに合わせます.
需要
インプリメンテーション方法
reverse()
は、チェーンテーブルを循環的に反転させ、チェーンテーブルは1回だけ巡回させるべきである.この関数はチェーン自体を直接修正しますので、戻り値は必要ありません.var list = 2 -> 1 -> 3 -> 6 -> 5 -> null
reverse(list)
list === 5 -> 6 -> 3 -> 1 -> 2 -> null
法を解くコードは以下の通りです
function reverse(list) {
if (!list) return null
let result
for (let node = list; node; node = node.next) {
result = new Node(node.data, result)
}
list.data = result.data
list.next = result.next
}
考え方は、前から後までチェーンを通して、各ノードに対してコピーし、next
が前のノードを指すようにすることです.最後のresult
は反転の新しいチェーンです.list
はどうやって修正しますか?簡単には、result
の最初のノード値をlist
に割り当て、list
にresult
の第2のノードを指すようにすればいい.参考資料
Codewars Kata GitHubのコードはGitHubのテストを実現します.