检查单链表是否为循环链表

bool CheckCircular(NodeData* head)
{
	if (NULL == head) return false;

	NodeData* p = head;
	NodeData* q = p->next;

	while(1) {
		if (NULL == p ||
			NULL == q) return false;

		if (p == q) return true;

		p = p->next;
		q = q->next;
		if (NULL == q) {
			return false;
		} else {
			q = q->next;
		}
	}

	return false;
}

你可能感兴趣的:(检查单链表是否为循环链表)