[C语言]查找链表的中间元素

来源:互联网 发布:紫菜三角梅淘宝店铺 编辑:程序博客网 时间:2024/06/06 20:58

查找链表的中间元素,最简便的方法之一,就是先遍历一遍链表,得到链表长度,再根据长度遍历得到中间的元素。我这里用的是快慢指针去查找,只需要遍历一次即可,快指针每次走两步,慢指针每次走一步,当快指针走完了,慢指针所指位置即中间元素的位置,具体实现如下

C代码实现

struct ListNode {    int val;    struct ListNode *next;};/*** 若链表元素为奇数个,则返回中间的元素,若链表元素为偶数个,则返回中间 元素偏左的一个 */struct ListNode* link_list_find_mid_ele(struct ListNode* head){    struct ListNode* fast, *slow;    fast = head;    slow = head;    if(!head)        return NULL;    while(fast && fast->next)    {        fast = fast->next->next;        slow = slow->next;    }    return slow;}
0 0
原创粉丝点击