題目:

解答:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteMiddle(struct ListNode* head)
{
int cnt = 0;
struct ListNode *pre = NULL;
struct ListNode *cur = NULL;
cur = head;
while (cur) {
cur = cur->next;
cnt += 1;
}
cnt >>= 1;
if (cnt == 0) {
return NULL;
}
cur = head;
pre = head;
while (cnt--) {
pre = cur;
cur = cur->next;
}
pre->next = cur->next;
return head;
}