[Question sur la structure des données au JO] Le nœud intermédiaire de la liste chaînée

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

3. Mise en œuvre du code


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;
}

Je suppose que tu aimes

Origine blog.csdn.net/m0_62531913/article/details/132309395
conseillé
Classement