输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。
示例:
给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.
解题思路:
很简单的c语言的解法,思路:给的倒数的数字,c语言又不能直接求链表长度,就循环一次把链表长度求出来,然后再count - k就得到正数几位,循环到那里停止,直接返回链表就行了。
代码:
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
int count = 0,i;
struct ListNode* p = head;
while(p){
count++; //得到链表的长度
p = p->next;
}
for(i=0; i < count - k; i++){
head = head->next; //找到他在正数几位,然后找到它
}
return head;
}