跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 【C语言】Leetcode 876. 链表的中间节点

【C语言】Leetcode 876. 链表的中间节点

时间:2024-03-30 19:10:57 来源:网络cs 作者:峨乐 栏目:卖家故事 阅读:

标签: 中间  语言 
阅读本书更多章节>>>>

主页:17_Kevin-CSDN博客

专栏:《Leetcode》

题目

 通过题目的要求可以判断出有两种示例要解决,一种是偶数节点的链表,一种是奇数节点的链表,应对这两种情况我们需要使程序对二者都可以兼容。

解决思路

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

中间节点,只要找到中间的位置就能找到中间的节点。那么这个位置要怎么去查找呢?

我们可以用快慢指针的思想来进行查找,定义一个慢指针,再定义一个是慢指针速度二倍的快指针,这样的话当快指针到最后的位置的时候慢指针指向的就是中间节点了。

但是在查找的时候还要同时解决上面提到的两种情况:

①奇数链表

从两个指针的初始开始研究,当前两个指针都处在第一个节点的位置,然后我们开始移动。

可以发现,在奇数数量节点的链表中,当fast到达最后一个节点的时候slow刚好指向了中间节点。这样就完成了查找中间节点的目的,该遍历循环的条件是fast -> next != NULL,也就是当fast的next是NULL的时候终止循环,此时的slow指向就是中间节点。

②偶数链表

同样的,我们也是从头开始循环。

因为是偶数链表,所以需要查找到的中间节点的位置是中间两个节点中的第二个,当循环后发现,当fast到达NULL的时候slow指向的才是中间的第二个节点,所以该情况的循环条件为fast != NULL。


以上便是本篇博客的全部内容,感谢您的支持~ 

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-03-30/151117.html,文章来源:网络cs,作者:峨乐,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论