链表的中间节点

这题需要用到快慢指针的思想,快指针叫fast,慢指针是slow,快指针每次往后移两个节点,slow只移动一个节点,这样子fast的速度是slow的两遍,当fast遍历完链表,slow才遍历一半,正好就在中间。

代码:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 typedef struct ListNode LSTNode;
struct ListNode* middleNode(struct ListNode* head) {
    LSTNode* slow,*fast;//定义两个指针
    fast=slow=head;//初始化指针
    while(fast&&fast->next)//fast走的快,它不能为空,并且它的next也不行
    {
        slow=slow->next;//slow每次往后移动一个节点
        fast=fast->next->next;//fast每次往后移动两个节点
    }
    return slow;//返回slow
}
相关推荐
海石11 分钟前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode
海石21 分钟前
1400分的dp汗流浃背之【交替子数组计数】
算法·leetcode
奋发向前wcx25 分钟前
P2590 树的统计 题目解析
数据结构·算法·深度优先
imbackneverdie1 小时前
AI4S不止于分子药物:以MedPeer为代表的科研基建打开产业新增量
大数据·人工智能·算法·aigc·科研·学术·ai 4s
额鹅恶饿呃2 小时前
C语言中的数据结构和变量
c语言·数据结构·算法
运行时记录4 小时前
prompt-optimizer skill
算法
万法若空4 小时前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表
退休倒计时4 小时前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript
学逆向的4 小时前
汇编——内存
开发语言·汇编·算法·网络安全
tachibana24 小时前
hot100 翻转二叉树(226)
java·数据结构·算法·leetcode