C语言双向链表求中点

在双向链表中查找链表的中间节点,如果链表的长度为偶数,取左边的节点,如果链表长度为0,返回null,用函数实现

伪代码
Node *m, *h;
int m;
while (h->next == null)
{
h = h->next;
if (i++ % 2 == 0) m = m -> next;
}
return m;

先遍历求长度 之后在求中间的结点 就行了 啊 时间复杂度o(n)

定义两个指针,分别从两个端点向中间运动,若头端的指针的next就是后端的指针则取任意一个, 否则若两个指针指向同一个节点则就是他了,但是前提得
遍历链表