给定一个头结点为的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
结点数量介于 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; }