这里只贴了函数,该函数依赖于之前的博文 单链表及单链表的基本操作实现
//返回单链表中间节点
//指针一个一次走一步,一个一次走两步即可实现
void FindMiddleNode(SingleList* sl) {
assert(sl);
SingleListNode* slow = sl->_head;
SingleListNode* fast = sl->_head;
if (slow == NULL) {
return;
}
if (fast->_next == NULL) {
printf("%d\n", fast->_data);
return;
}
if (fast->_next->_next == NULL) {
printf("%d\n", fast->_next->_data);
return;
}
while (fast) {
slow = slow->_next;
fast = fast->_next->_next;
}
printf("%d\n", slow->_data);
}