python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点
生活随笔
收集整理的這篇文章主要介紹了
python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
實現一個函數,一個可以刪除單鏈表中倒數第k個節點
難度
簡單
分析
本題比較簡單,實現方法多種多樣,這里提供一種方法
首先明確一點,在單鏈表中刪除倒數第k個節點,需要找到他的前一個節點,讓前一個節點指向后一個節點即可。
- 如果鏈表為空,或者是k小于1直接返回即可。
- 除此之外從鏈表頭走到尾,沒移動一步,就讓k的值減1。
下面來分析具體的過程:
- 鏈表1 -> 2 -> 3, k=4 , 鏈表不存在倒數第四個節點。
- 走過的節點為:1 ,2 ,3
- k的變化:3, 2, 1
- 鏈表1 -> 2 -> 3, k=3 , 鏈表倒數第三個節點,就是第一個節點。
- 走過的節點為:1 ,2 ,3
- k的變化:2, 1, 0
- 鏈表1 -> 2 -> 3, k=2 , 鏈表倒數第三個節點,就是第2個節點。
- 走過的節點為:1 ,2 ,3
- k的變化:1, 0, -1
由上可知,當鏈表移動帶尾部是,一共有三種情況:
- 重頭重新遍歷鏈表,每走一步k加1
- 當k等于0的時候就停止,因為這個節點就是要刪除節點的前一個節點。(這也容易理解,如鏈表1 -> 2 -> 3, k=2,鏈表的長度為 n=3。此時 3-2=1,正好是2的前一個節點)
Java代碼實現
public Node removeLastKthNode(Node head, int k){if(head == null || k < 1) return head;Node cur = head;while(cur != null){k--;cur = cur.next;}if(k == 0) head = head.next;if(k < 0){cur = head;while(++k != 0){cur = cur.next;}cur.next = cur.next.next;}return head; }加油鴨!!!
點贊沖!!!
總結
以上是生活随笔為你收集整理的python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos攻击使用的什么技术(ddos攻击
- 下一篇: wxpython多线程消息传递_wxpy