【資料結構】連結串列相關練習題:連結串列中倒數第k個結點
阿新 • • 發佈:2018-12-15
題目描述:輸入一個連結串列,輸出該連結串列中倒數第k個結點。
分析:這個題同樣是引入快慢指標,為了遍歷一次就找到倒數第k個節點,可以定義兩個指標:fast指標從連結串列的頭指標開始遍歷向前走k-1(k)步,slow指標保持不動;從第k步開始,slow指標開從連結串列的頭指標遍歷;由於兩個指標的距離保持在k-1(k)步,當fast指標到達連結串列的尾結點(NULL)時,slow指標正好就走到倒數第k個結點的位置。
程式碼如下:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { struct ListNode* fast=pListHead; struct ListNode* slow=pListHead; while(k--) { if(fast) { fast=fast->next; } else { return NULL; } } while(fast) { slow=slow->next; fast=fast->next; } return slow; } };