您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“c++如何刪除倒數第k個節點”,內容詳細,步驟清晰,細節處理妥當,希望這篇“c++如何刪除倒數第k個節點”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
算法:
該類型的題目,核心點在于如何找到倒數第k個節點的位置,典型的操作辦法是,雙指針的方法。
第一個指針先偏移k個位置,第二個指針才開始執行然后兩個指針同時往后移動,第一個指針到鏈表尾部,第一個指針就是倒數第k個位置
題目 1 :鏈表中倒數第k個節點
代碼實現:
// 算法:這是典型的雙指針的做法,// 第一個指針先偏移k個位置,第二個指針才開始執行// 然后兩個指針同時往后移動,第一個指針到鏈表尾部,第一個指針就是倒數第k個位置/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func getKthFromEnd(head *ListNode, k int) *ListNode { c := head for i:=0;i<k;i++ { head = head.Next } for head != nil { c = c.Next head = head.Next } return c}
題目2: 刪除倒數第k個節點
代碼實現:
// 算法:該問題是題目1的變形題目,// 采用題目1的算法找到倒數第k個節點的前序節點,然后刪除倒數第k個節點/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func removeNthFromEnd(head *ListNode, n int) *ListNode { head1 := head head2 := head for i:=n; i>0; i-- { head2 = head2.Next } if head2 == nil { head = head.Next return head } for { if head2.Next == nil { break } head2 = head2.Next head1 = head1.Next } // 獲取到 倒數第n-1位置的節點 head1.Next = head1.Next.Next return head}
讀到這里,這篇“c++如何刪除倒數第k個節點”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。