题目描述:
给定一个头结点为
head
的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
一、解题步骤
这个题我设了两个指向head的指针,一个快指针,每次移动+2;一个慢指针,每次移动加1。然后这个的话快指针指向NULL时,慢指针指向刚好符合要求,指向题目中要求的中间结点
然后注意指向范围
二、代码
代码如下(示例):
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* middleNode(struct ListNode* head){
int len=0;
int n,i;
struct ListNode *p=head;//快指针
struct ListNode *q=head;//慢指针
while(p!=NULL&&p->next!=NULL)//范围要求
{
p=p->next->next;
q=q->next;
}
return q;
}