コード例 #1
0
struct Node* EntryNode(struct Node* head)
{
	struct Node* meetingNode = MeetingNode(head);
	if (meetingNode == NULL)
		return NULL;
	struct Node* pNode = meetingNode;
	int Num_of_nodes = 0;
	while(pNode->Next != meetingNode)
	{
		pNode= pNode->Next;
		Num_of_nodes++;
	}
	Num_of_nodes++;
    printf("\nThe number of nodes in the loop is %d",Num_of_nodes);
	pNode = meetingNode;

	struct Node* pNode2 = head;
	while(pNode != pNode2)
	{
		pNode = pNode->Next;

		pNode2 = pNode2->Next;
	}
	return pNode;
}
コード例 #2
0
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
    ListNode* meetingNode = MeetingNode(pHead);
    if(meetingNode == NULL)
        return NULL;

    // get the number of nodes in loop
    int nodesInLoop = 1;
    ListNode* pNode1 = meetingNode;
    while(pNode1->m_pNext != meetingNode)
    {
        pNode1 = pNode1->m_pNext;
        ++nodesInLoop;
    }

    // move pNode1
    pNode1 = pHead;
    for(int i = 0; i < nodesInLoop; ++i)
        pNode1 = pNode1->m_pNext;

    // move pNode1 and pNode2
    ListNode* pNode2 = pHead;
    while(pNode1 != pNode2)
    {
        pNode1 = pNode1->m_pNext;
        pNode2 = pNode2->m_pNext;
    }

    return pNode1;
}
コード例 #3
0
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
	if (pHead == nullptr)
		return nullptr;
	ListNode* pNode = MeetingNode(pHead);

	if (pNode == nullptr)
		return nullptr;

	int loopNum = 1;
	ListNode* pNodeTemp = pNode;
	pNode = pNode->m_pNext;
	while (pNode != pNodeTemp){
		pNode = pNode->m_pNext;
		++loopNum;
	}
	pNode = pHead;
	for (int i = 0;i < loopNum;++i) {
		pNode = pNode->m_pNext;
	}
	pNodeTemp = pHead;
	while (pNodeTemp != pNode){
		pNode = pNode->m_pNext;
		pNodeTemp = pNodeTemp->m_pNext;
	}
	return pNode;
}
コード例 #4
0
void EntryNode(struct Node* head)
{
	struct Node* meetingNode = MeetingNode(head);
	if (meetingNode == NULL)
		return ;
	struct Node* pNode = meetingNode;
	int Num_of_nodes = 0;
	struct Node* pNode1;
	while(pNode->Next != meetingNode)
	{
		pNode= pNode->Next;
		Num_of_nodes++;
	}
	Num_of_nodes++;
    printf("\nThe number of nodes in the loop is %d",Num_of_nodes);
	pNode = meetingNode;

	struct Node* pNode2 = head;
	while(pNode != pNode2)
	{
		pNode = pNode->Next;

		pNode2 = pNode2->Next;
	}
	for(int k=0;k<Num_of_nodes;k++)
	{
		pNode1 = pNode->Next;
	}
	pNode1->Next = NULL;

}