【每日一题-3】链表带环问题

来源:互联网 发布:php下载系统源码 编辑:程序博客网 时间:2024/05/10 03:00

判断链表是否带环?如果带环,环的长度是多少?环的入口节点是什么?

struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};//判断链表是否带环?ListNode* IsLoop(ListNode* pHead){if (NULL == pHead){return NULL;}ListNode* pfast = pHead;ListNode* pslow = pHead;while (pHead->next != NULL && pHead->next->next != NULL){pfast = pfast->next->next;pslow = pslow->next;if (pfast == pslow){return pslow;}}return NULL;}//若带环求环的长度?说明已经存在环int GetLoopListLen(ListNode* pMeetNode){if (pMeetNode == NULL)//pMeetNode为快慢指针相遇点return 0;int count = 0;ListNode* cur = pMeetNode;while (cur != pMeetNode){++count;cur = cur->next;}return count;}//若带环求环的入口点?ListNode* EntryNodeOfLoop(ListNode* pHead, ListNode* pMeet){if (NULL == pHead && NULL == pMeet){return NULL;}ListNode* pFirst = pHead;ListNode* pSecond = pMeet;while (pFirst != pMeet){pFirst = pFirst->next;pSecond = pSecond->next;}return pFirst;}
设计一个类不能被继承

class A{public:static A GetA(){A a;return a;}static void deleteA(A* a){delete a;a = NULL;}private:A(){cout << "A" << endl;}~A(){cout << "~A" << endl;}};
设计一个类只能在栈上创建对象。 
class StackType{public:static StackType* CreateObject(){return new StackType;}private:StackType(){}int _p;};
设计一个类只能在堆上创建对象。 
class HeapType{public:static HeapType* CreateObject(){return new HeapType;}private:HeapType(){}int _p;};

原创粉丝点击