Lien du titre original : https://leetcode.cn/problems/middle-of-the-linked-list/description/
Table des matières
1. Description du sujet
2. Analyse de la pensée
méthode de pointeur rapide et lente
Trouvez le nœud du milieu à l'aide des pointeurs rapides et lents. Le pointeur rapide fait deux pas à chaque fois , et le pointeur lent fait un pas à la fois . Lorsque le pointeur rapide atteint la fin, le pointeur lent va juste à la position médiane .
Ici, nous utilisons slow pour représenter des pointeurs lents et fast pour représenter des pointeurs rapides. Laissez à la fois slow et fast pointer vers le nœud head head au début.
Si la liste chaînée a un nombre impair de nœuds , lorsque fast->next=NULL , slow pointe vers le nœud intermédiaire :
Si la liste chaînée a un nombre pair de nœuds , lorsque fast==NULL , slow pointe vers le nœud intermédiaire :
3. Mise en œuvre du code
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* middleNode(struct ListNode* head){
struct ListNode *slow=head,*fast=head;
while(fast&&fast->next)
{
slow=slow->next;
fast=fast->next->next;
}
return slow;
}