单向链表--查找中间节点

/*查找中间节点*/
/*思想很简单,两个指针,同时开始从头走,一个一次走两步,一个一次走一步,
偶数节点时候,中间的返回前面或后面的都可,奇数个节点的时候返回中间节点*/
single_list_node* Find_middle_node(single_list_node* head)
{
	single_list_node *p1 = NULL, *p2 = NULL;

	if(NULL == head)
	{
		return NULL;
	}
	p1 = p2 = head;
	while(p1 != NULL)
	{
		p1 = p1->next;
		if(NULL == p1)
		{
			break;
		}		
		p1 = p1->next;
		p2 = p2->next;
	}
	return p2;
}

 

你可能感兴趣的:(单链表)