struct ListNode {
int val;
ListNode *next;
struct ListNode(int x) :
val(x), next(NULL) {
}
输入一个链表,输出该链表中倒数第k个结点
第一种方法:定义两个结点指针p1,p2指向该链表的头结点,然后利用p1遍历整个链表,记下长度n;然后再利用p2往后遍历n-k个结点即可,因为p2已经指向了头结点。
ListNode* FindKthToTail(ListNode* pListHead, unsigned
int
k) {
ListNode *ptr = pListHead;//遍历指针
ListNode *ptr1 = pListHead;//返回指针
if
(pListHead ==
NULL || k == 0
)
return
NULL;
int
n
=
1
;//已经指向第一个结点
while
(ptr->next !=
NULL
){
ptr=ptr->next;
n++;
}
if
(n
<k)
return
NULL;
for
(
int
i =
0
; i < n
- k; ++i)
ptr1 = ptr1->next;
return
ptr1;
}
NULL || k == 0
)原文:http://www.cnblogs.com/jlxuexijidi-2015/p/4887552.html