给定一个头结点为的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
结点数量介于 1 和 100 之间。
struct ListNode* middleNode(struct ListNode* head ) { struct ListNode *dummy = (struct ListNode*)malloc(sizeof(struct ListNode)); dummy->next = head; struct ListNode *p = dummy; struct ListNode *cur = dummy; int sz = 0; while(p->next) { sz++; p = p->next; } int mid = (sz / 2) + 1 ; for(int i=0;i<mid;i++) { cur = cur->next; } dummy->next = cur; return dummy->next; }
package main //import "fmt" import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ func middleNode( head *ListNode ) *ListNode { arr:=[]*ListNode{} for p:=head;p!=nil;p=p.Next{ arr=append(arr,p) } return arr[len(arr)/2] }