输入一个链表,输出该链表中倒数第k个结点。
思路: 先求出长度, 再计算出倒数第K个, 是整数第几个.
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode* val = NULL;
do
{
if (NULL == pListHead) {
break;
}
ListNode* p = pListHead;
// 计算链表长度
int listSiz = 0;
while (p != NULL) {
listSiz++;
p = p->next;
}
int sortIndex = listSiz - k;
p = pListHead;
while (sortIndex-- && p != NULL) {
p = p->next;
}
val = p;
} while (0);
return val;
}
测试: