问题描述:
查找单链表的中间节点,要求只能遍历一次链表
实现思路:
先将链表遍历一次,统计链表节点的个数,然后设置两个指向头结点的指针,让第一个先走链表个数的一半,另一个指针同时开始走,当第一个指针走到链表的结尾时,另一个链表指向的结点就是链表的中介结点;
具体代码实现如下:
typedef int DataType;
typedef struct SListNode{
struct SListNode* _next;
DataType _data;
}SListNode,*pSListNode;
pSListNode FindMiddleNode(pSListNode pHead)
{
int count = 0;
int Mid = 0;
pSListNode cur = pHead;
pSListNode tmp = pHead;
while (cur)
{
count