题解 | #链表中环的入口结点#

链表中环的入口结点

http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

/**

  • struct ListNode {
  • int val;
  • struct ListNode *next;
  • };
  • C语言声明定义全局变量请加上static,防止重复定义 / /*
  • 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  • @param pHead ListNode类
  • @return ListNode类 / #include <stdbool.h> bool hasCycle(struct ListNode head ) { // write code here if(head == NULL) return false; struct ListNode p = head; for(int i = 1;i<10000;i++) { p = p->next; if(p == NULL) return false; } return true; } struct ListNode EntryNodeOfLoop(struct ListNode* pHead ) { // write code here if(hasCycle(pHead) == false) return NULL; struct ListNode *p1,*p2; p1 = pHead; int count = 0; for(int i = 1;i<= 10000;i++) p1 = p1->next; p2 = p1; do { count++; p1 = p1->next; }while(p1 != p2); p2 = p1 = pHead; do { p2 = p1; for( int i = 1;i<=count;i++) { p2 = p2->next;
    } if(p2 == p1) return p2; else p1 = p1->next; }while(1);

}

全部评论

相关推荐

比亚迪深圳规划院 产品经理 0.9×1.36×12
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务