溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言怎么刪除鏈表中的節(jié)點

發(fā)布時間:2021-08-26 15:46:46 來源:億速云 閱讀:713 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“C語言怎么刪除鏈表中的節(jié)點”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C語言怎么刪除鏈表中的節(jié)點”吧!

請編寫一個函數(shù),使其可以刪除某個鏈表中給定的(非末尾)節(jié)點,你將只被給定要求被刪除的節(jié)點。

現(xiàn)有一個鏈表 -- head = [4,5,1,9],它可以表示為:

4 -> 5 -> 1 -> 9

示例 1:

輸入: head = [4,5,1,9], node = 5
輸出: [4,1,9]
解釋: 給定你鏈表中值為 5 的第二個節(jié)點,那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?4 -> 1 -> 9.

示例 2:

輸入: head = [4,5,1,9], node = 1
輸出: [4,5,9]
解釋: 給定你鏈表中值為 1 的第三個節(jié)點,那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?4 -> 5 -> 9.

說明:

  • 鏈表至少包含兩個節(jié)點。

  • 鏈表中所有節(jié)點的值都是唯一的。

  • 給定的節(jié)點為非末尾節(jié)點并且一定是鏈表中的一個有效節(jié)點。

  • 不要從你的函數(shù)中返回任何結(jié)果。

上期的問題是:165,二叉搜索樹的最近公共祖先

1public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
2    while ((root.val - p.val) * (root.val - q.val) > 0)
3        root = p.val < root.val ? root.left : root.right;
4    return root;
5}

解析:

這個很好理解,只要while循環(huán)為true,那么p和q要么都在root的左子樹中,要么都在root的右子樹中,所以繼續(xù)往下找。當(dāng)while中的循環(huán)為false的時候,那么p和q要么一個在root的左子樹一個在root的右子樹,要么p和q其中的一個是另一個的祖先節(jié)點(當(dāng)while中條件語句的前面等于0的時候)。我們還可以改為遞歸的方式

1public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
2    return (root.val - p.val) * (root.val - q.val) <=0 ? root :
3            lowestCommonAncestor(p.val < root.val ? root.left : root.right, p, q);
4}

感謝各位的閱讀,以上就是“C語言怎么刪除鏈表中的節(jié)點”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C語言怎么刪除鏈表中的節(jié)點這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI