思路:可以先遍历链表求出链表的总长度,然后找到中间节点的位置。比较快的方法是设置两个指针都指向头节点,第一个指针每次移动一步,第二个指针每次移动两步,那么第二个指针到末尾的时候第一个指针就在中间位置了。
示例:
int GetMidNode(list l)
{
position p, mid;
p = mid = l;
while (p->next != NULL){
if (p->next->next != NULL){
p = p->next->next;
mid = mid->next;
}
else{
p = p->next;
}
}
return mid->data;
}