摘要:需求實(shí)現(xiàn)一個函數(shù),把兩個鏈表連接起來,并返回連接后的鏈表頭結(jié)點(diǎn)。遞歸版本本身就可以作為遞歸的邏輯。實(shí)際上等于,直到遞歸到末尾,這時直接返回即可。代碼如下參考資料的代碼實(shí)現(xiàn)的測試
TL;DR
把一個鏈表連接到另一個鏈表的末尾。系列目錄見 前言和目錄 。
需求實(shí)現(xiàn)一個 append() 函數(shù),把兩個鏈表連接起來,并返回連接后的鏈表頭結(jié)點(diǎn)。
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) 實(shí)際上等于 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)的思路是,在 listA 和 listB 都不為空的情況下,先找到 listA 的尾節(jié)點(diǎn),假設(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 的代碼實(shí)現(xiàn)
GitHub 的測試
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81106.html
摘要:需求實(shí)現(xiàn)函數(shù)把鏈表居中切分成兩個子鏈表一個前半部分,另一個后半部分。提示一個簡單的做法是計算鏈表的長度,然后除以得出前半部分的長度,最后分割鏈表。最后用把數(shù)組轉(zhuǎn)回鏈表。參考資料的代碼實(shí)現(xiàn)的測試 TL;DR 把一個鏈表居中切分成兩個,系列目錄見 前言和目錄 。 需求 實(shí)現(xiàn)函數(shù) frontBackSplit() 把鏈表居中切分成兩個子鏈表 -- 一個前半部分,另一個后半部分。如果節(jié)點(diǎn)數(shù)為奇...
摘要:每個線性表上的數(shù)據(jù)最多只有前和后兩個方向。數(shù)組鏈表隊(duì)列棧等就是線性表結(jié)構(gòu)。非線性表數(shù)據(jù)之間并不是簡單的前后關(guān)系。不包含任何元素的棧稱為空棧。移除棧頂?shù)脑兀瑫r返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基礎(chǔ)知識就像是一座大樓的地基,它決定了我們的技術(shù)高度。 我們應(yīng)該多掌握一些可移值的...
摘要:實(shí)現(xiàn)移除給定的元素要移除的元素返回值表示移除成功方法說明移除單向鏈表中某個位置的元素。的前端樂園原文鏈接寒假前端學(xué)習(xí)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法二鏈表 本系列的第一篇文章: 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(一),棧與隊(duì)列第二篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表第三篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(三):集合第四篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與...
摘要:對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回改函數(shù)會返回的項(xiàng)組成的數(shù)組。將所有的數(shù)組元素鏈接成一個字符串。數(shù)組合并方法可以向一個數(shù)組傳遞數(shù)組對象或是元素。通過棧實(shí)現(xiàn)對正整數(shù)的二進(jìn)制轉(zhuǎn)換。源碼地址的數(shù)據(jù)結(jié)構(gòu)與算法一源碼 1數(shù)組 1.1方法列表 數(shù)組的常用方法如下: concat: 鏈接兩個或者更多數(shù)據(jù),并返回結(jié)果。 every: 對數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對每一項(xiàng)都返回true...
摘要:本系列所有文章第一篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章學(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)與算法之棧與隊(duì)列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)...
閱讀 1945·2021-11-22 14:44
閱讀 1680·2021-11-02 14:46
閱讀 3669·2021-10-13 09:40
閱讀 2606·2021-09-07 09:58
閱讀 1617·2021-09-03 10:28
閱讀 1666·2019-08-29 15:30
閱讀 984·2019-08-29 15:28
閱讀 1474·2019-08-26 12:20