求链表倒数第k个结点
生活随笔
收集整理的這篇文章主要介紹了
求链表倒数第k个结点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:輸入一個單向鏈表(只有指向下一個結點指針),輸出鏈表中的倒數第k個結點。
分析:
1. 一個單向鏈表只有指向下一個結點的指針,所以我們無法得到前面一個結點的指針,所以不能通過最樸素的枚舉法來求出。
2. 現在要求出倒數第k個結點?,F在用一個指針枚舉是無法求出,但是我們可以使用兩個指針法(非常重要)。
? ?初始化設置兩個指針p1和p2,p1和p2都指向鏈表的頭結點。我們可以先讓指針p1指針先走到第k個結點,下一步開始兩個指針p1和p2一起走,當p1指向鏈表最后一個結點的時候p2指向即為倒數第k個結點。
? ?為什么呢這個方法是正確的?
? ?當p1指向第k個結點的時候,p2和p1相差k個結點,所以當p1指向尾結點的時候,p2指向的即為倒數第k個結點。
代碼:
[cpp]?view plaincopy
總結
以上是生活随笔為你收集整理的求链表倒数第k个结点的全部內容,希望文章能夠幫你解決所遇到的問題。