问题和删除倒数第k个节点类似,如果两次遍历很容易得到结果
这里可以使用快慢指针的方法
p每次遍历两个节点,q每次遍历一个节点
当p或者p的下一个节点为空时,q指向链表的中间节点
代码:
int midList(Node * head) {//快慢指针
Node * fast = head;
Node * slow = head;
while (fast&&fast->next) {
fast = fast->next->next;
slow = slow->next;
}
return slow->data;
}
运行结果