成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用 JavaScript 實現(xiàn)鏈表操作 - 07 Append

jone5679 / 416人閱讀

摘要:需求實現(xiàn)一個函數(shù),把兩個鏈表連接起來,并返回連接后的鏈表頭結(jié)點。遞歸版本本身就可以作為遞歸的邏輯。實際上等于,直到遞歸到末尾,這時直接返回即可。代碼如下參考資料的代碼實現(xiàn)的測試

TL;DR

把一個鏈表連接到另一個鏈表的末尾。系列目錄見 前言和目錄 。

需求

實現(xiàn)一個 append() 函數(shù),把兩個鏈表連接起來,并返回連接后的鏈表頭結(jié)點。

var listA = 1 -> 2 -> 3 -> null
var listB = 4 -> 5 -> 6 -> null
append(listA, listB) === 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null

如果兩個鏈表都是 null 就返回 null ,如果其中一個是 null 就返回另一個鏈表。

遞歸版本

append 本身就可以作為遞歸的邏輯。append(listA, listB) 實際上等于 listA.next = append(listA.next, listB) ,直到 listA 遞歸到末尾 null ,這時 append(null, listB) 直接返回 listB 即可。加上邊界條件判斷,代碼如下:

function append(listA, listB) {
  if (!listA) return listB
  if (!listB) return listA

  listA.next = append(listA.next, listB)
  return listA
}
循環(huán)版本

循環(huán)的思路是,在 listAlistB 都不為空的情況下,先找到 listA 的尾節(jié)點,假設(shè)為 node ,然后 node.next = listB 即可。代碼如下:

function appendV2(listA, listB) {
  if (!listA) return listB
  if (!listB) return listA

  let node = listA
  while (node.next) node = node.next

  node.next = listB
  return listA
}
參考資料

Codewars Kata
GitHub 的代碼實現(xiàn)
GitHub 的測試

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81106.html

相關(guān)文章

  • JavaScript 實現(xiàn)鏈表操作 - 12 Front Back Split

    摘要:需求實現(xiàn)函數(shù)把鏈表居中切分成兩個子鏈表一個前半部分,另一個后半部分。提示一個簡單的做法是計算鏈表的長度,然后除以得出前半部分的長度,最后分割鏈表。最后用把數(shù)組轉(zhuǎn)回鏈表。參考資料的代碼實現(xiàn)的測試 TL;DR 把一個鏈表居中切分成兩個,系列目錄見 前言和目錄 。 需求 實現(xiàn)函數(shù) frontBackSplit() 把鏈表居中切分成兩個子鏈表 -- 一個前半部分,另一個后半部分。如果節(jié)點數(shù)為奇...

    daryl 評論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 線性表(數(shù)組、棧、隊列、鏈表

    摘要:每個線性表上的數(shù)據(jù)最多只有前和后兩個方向。數(shù)組鏈表隊列棧等就是線性表結(jié)構(gòu)。非線性表數(shù)據(jù)之間并不是簡單的前后關(guān)系。不包含任何元素的棧稱為空棧。移除棧頂?shù)脑?,同時返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基礎(chǔ)知識就像是一座大樓的地基,它決定了我們的技術(shù)高度。 我們應(yīng)該多掌握一些可移值的...

    kaka 評論0 收藏0
  • 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表

    摘要:實現(xiàn)移除給定的元素要移除的元素返回值表示移除成功方法說明移除單向鏈表中某個位置的元素。的前端樂園原文鏈接寒假前端學(xué)習(xí)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法二鏈表 本系列的第一篇文章: 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(一),棧與隊列第二篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表第三篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(三):集合第四篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與...

    lolomaco 評論0 收藏0
  • Javascript的數(shù)據(jù)結(jié)構(gòu)與算法(一)

    摘要:對數(shù)組中的每一項運行給定函數(shù),返回改函數(shù)會返回的項組成的數(shù)組。將所有的數(shù)組元素鏈接成一個字符串。數(shù)組合并方法可以向一個數(shù)組傳遞數(shù)組對象或是元素。通過棧實現(xiàn)對正整數(shù)的二進制轉(zhuǎn)換。源碼地址的數(shù)據(jù)結(jié)構(gòu)與算法一源碼 1數(shù)組 1.1方法列表 數(shù)組的常用方法如下: concat: 鏈接兩個或者更多數(shù)據(jù),并返回結(jié)果。 every: 對數(shù)組中的每一項運行給定的函數(shù),如果該函數(shù)對每一項都返回true...

    VioletJack 評論0 收藏0
  • 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表

    摘要:本系列所有文章第一篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊列第二篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之二叉搜索樹簡單介紹鏈表鏈表一種常見的數(shù)據(jù)結(jié)構(gòu),可 本系列所有文章:第一篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)...

    jerryloveemily 評論0 收藏0

發(fā)表評論

0條評論

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