看接下来的一道题目
 1、给定一个头结点为 head 的非空单链表,返回链表的中间结点。
 如果有两个中间结点,则返回第二个中间结点。
 例子:[1,2,3,4,5] 返回中间节点3
 [1,2,3,4,5,6] 返回中间节点4
 我们该如何做呢,首先这里用到了快慢指针,就是让两个指针同时指向头节点,一个指针一个一个的走,一个指针是两个两个的走, 看下面的代码
看下面的代码
struct ListNode* middleNode(struct ListNode* head){struct ListNode* slow,*fast;slow=fast=head;//偶数节点时,fast->next为空代表结束//奇数节点时  fast空代表结束while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;}
下面这个例题时快慢指针的变形,类似于快慢指针
2、输入一个链表,输出该链表中倒数第k个结点。
 输入:
 1,{1,2,3,4,5}
 返回值:{5}
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {struct ListNode* slow,* fast;slow=fast=pListHead;//先让fast走k步,拉开差距while(k--){//如果fast为空,就说明倒数k步已经超过链表范围,直接返回NULLif(fast==NULL)return NULL;fast=fast->next;}while(fast){slow=slow->next;fast=fast->next;}return slow;}