[力扣c语言实现]876.链表的中间结点

    xiaoxiao2023-11-16  153

    876.链表的中间结点

    1. 题目描述2.代码如下

    原题目连接

    1. 题目描述

    给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

    示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

    示例 2: 输入:[1,2,3,4,5,6] 输出:此列表中的结点 4 (序列化形式:[4,5,6]) 由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。

    提示: 给定链表的结点数介于 1 和 100 之间。

    2.代码如下

    //2018-12-04 注意中间条件即可 struct ListNode* middleNode(struct ListNode* head) { if(!head||!head->next) { return head; } int len = 0 ; typedef struct ListNode list; list *p=head; while(p) { len++; p=p->next; } int num = len%2; p=head; if(num==0)//偶数个结点 { num=len/2; for(int i=0;i<num;i++) { p = p->next; } return p; } else { num=len/2; for(int i =0;i<num;i++) { p = p->next; } return p; } return NULL; } ```c
    最新回复(0)