版权声明:如需转载,请注明出处 https://blog.csdn.net/baidu_41813368/article/details/83796075
整体思路
1.双指针法
一个指针A是另外一个指针B的2倍
2.A走到尽头的时候,B就走到中间节点
3.什么时候走到尽头,指针A指向一个空指针NULL
代码部分
// 遍历一次,找到中间结点
SListNode * FindMid(SListNode *pFirst)
{
SListNode *fast = pFirst;
SListNode *slow = pFirst;
while (1)
{
fast = fast->Next;
if (fast == NULL) {
break;
}
fast = fast->Next;
if (fast == NULL) {
break;
}
slow = slow->Next;
}
printf("%d\n", slow->data);
}
void TestFindMid() {
SListNode *First = NULL;
SListPushBack(&First, 1);
SListPushBack(&First, 2);
SListPushBack(&First, 3);
SListPushBack(&First, 4);
SListPushBack(&First, 5);
FindMid(First);
SListPushBack(&First, 6);
FindMid(First);
}