国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用 JavaScript 實現鏈表操作 - 09 Move Node

suosuopuo / 2234人閱讀

摘要:需求實現一個函數,把源鏈表的頭節點移到目標鏈表。當源鏈表為空時函數應拋出異常。為了簡化起見,我們會用一個對象來存儲改變后的源鏈表和目標鏈表的引用。它也是函數的返回值。解法配合,這個非常簡單,注意這個函數沒有改變兩個鏈表本身。

TL;DR

把一個鏈表的首節點移到另一個鏈表。系列目錄見 前言和目錄 。

需求

實現一個 moveNode() 函數,把源鏈表的頭節點移到目標鏈表。當源鏈表為空時函數應拋出異常。為了簡化起見,我們會用一個 Context 對象來存儲改變后的源鏈表和目標鏈表的引用。它也是函數的返回值。

var source = 1 -> 2 -> 3 -> null
var dest = 4 -> 5 -> 6 -> null
moveNode(source, dest).source === 2 -> 3 -> null
moveNode(source, dest).dest === 1 -> 4 -> 5 -> 6 -> null

這個 kata 是下一個 kata 的簡化版,你可以重用 第一個 kata 的 push 方法。

關于 Context

Context 的定義長這個樣子,source 代表源鏈表,dest 代表目標鏈表。

function Context(source, dest) {
  this.source = source
  this.dest = dest
}
解法

配合 push ,這個 kata 非常簡單,注意這個函數沒有改變兩個鏈表本身。代碼如下:

function moveNode(source, dest) {
  if (!source) throw new Error("source is empty")
  return new Context(source.next, push(dest, source.data))
}
總結

這個 kata 本身很簡單,就沒有分遞歸和循環的版本了,其存在意義主要是為了下一個 kata 做鋪墊。

算法相關的代碼和測試我都放在 GitHub 上,如果對你有幫助請幫我點個贊!

參考資料

Codewars Kata
GitHub 的代碼實現
GitHub 的測試

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81130.html

相關文章

  • JavaScript 實現鏈表操作 - 10 Move Node In-place

    摘要:需求實現一個函數,把源鏈表的頭結點移到目標鏈表的開頭。要求是不能修改兩個鏈表的引用。跟前一個不同的是,這個是在不改變引用的情況下修改兩個鏈表自身。最優的方案這個算法考的是對鏈表節點的插入和刪除。大致思路為對做刪除一個節點的操作。 TL;DR 用 in-place 的方式把一個鏈表的首節點移到另一個鏈表(不改變鏈表的引用),系列目錄見 前言和目錄 。 需求 實現一個 moveNode()...

    CNZPH 評論0 收藏0
  • JavaScript 實現鏈表操作 - 前言和目錄

    摘要:我打算寫一個鏈表操作的系列,來自的系列,實現語言是。通過自己實現一個鏈表和常用操作,可以加深理解這類數據結構的優缺點。鏈表經常用來訓練指針操作,雖然這只對適用,但等高級語言中控制引用的思路其實也差不多。 TL;DR 我打算寫一個鏈表操作的系列,來自 Codewars 的 Linked List 系列 kata ,實現語言是 JavaScript 。這篇是開篇,簡單描述了一下我寫這個的目...

    BetaRabbit 評論0 收藏0
  • JavaScript 實現鏈表

    摘要:相反,雙向鏈表具有指向其前后元素的節點。另外,可以對鏈表進行排序。這個實用程序方法用于打印鏈表中的節點,僅用于調試目的。第行將更新為,這是從鏈表中彈出最后一個元素的行為。如果鏈表為空,則返回。 showImg(https://segmentfault.com/img/bVbsaI7?w=1600&h=228); 什么是鏈表 單鏈表是表示一系列節點的數據結構,其中每個節點指向鏈表中的下一...

    appetizerio 評論0 收藏0

發表評論

0條評論

suosuopuo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<