给我们单链表的头结点,找出并返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。
注意·:通过两次循环计数的方式超时!
while(fast&&fast->next)//不能交换位置,否则就对空指针解引用了!!!!!!
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {
ListNode* slow=head;
ListNode* fast=head;
while(fast&&fast->next)
{
slow=slow->next;
fast=fast->next->next;
}
return slow;
}