面试宝典172页面试例题7
//输入单链表,得到中间节点的数据
int GetMidNode(LinkList L)
{
if(NULL==L)
{
cout<<"There is no node!"<<endl;
}
if (NULL==L->next)
{
cout<<"The linklist is empty!"<<endl;
}
//p用于指向中间节点,q用于测试是不是指向链表的尾节点
//q移动的步长为2,p移动的步长为1
LinkList p,q;
p=L;
q=L;
while (NULL!=q->next&&NULL!=q->next->next)//指向前2n个节点的中间(第n个节点)
{
p=p->next;
q=q->next->next;
}
if (NULL!=q->next)//若总结点数为奇数时,p向后移动一个元素
{
p=p->next;
}
return p->data;
}