删除链表的非尾节点(不能遍历链表)
参考链表的基本操作(点击查看)
给两个指针
fast slow
让fast一次向末尾走两步,slow一次向末尾走一步,当fast指向NULL时,slow指向中间结点
PNode FindMiddleNode(PNode pHead)
{
PNode fast = pHead;
PNode slow = pHead;
if(NULL == fast)
return NULL;
while(fast && fast->pNext != NULL && fast->pNext->pNext != NULL)
{
fast = fast->pNext->pNext; //改变while里面的条件少最后一个条件,如果是偶数个,中间元素为总元素除二加一
slow = slow->pNext; //三个条件都有的话,如果是偶数个,中间元素就是总元素除2
}
return slow;
}