zoukankan      html  css  js  c++  java
  • careercup-链表 2.6

    2.6 给定一个有环链表,实现一个算法返回环路的开头结点。

    类似leetcode中 Linked List Cycle II

    C++实现代码:

    #include<iostream>
    #include<new>
    using namespace std;
    
    struct ListNode
    {
        int val;
        ListNode *next;
        ListNode(int x):val(x),next(NULL) {}
    };
    
    void createList(ListNode *&L)
    {
        int arr[10]= {1,2,3,2,5,6,7,4,9,1};
        int i;
        ListNode *p=NULL;
        ListNode *t=NULL;
        for(i=0; i<10; i++)
        {
            ListNode *tmp=new ListNode(arr[i]);
            if(L==NULL)
            {
                L=tmp;
                p=tmp;
            }
            else
            {
                if(arr[i]==4)
                    t=tmp;
                p->next=tmp;
                p=tmp;
            }
        }
        p->next=t;
    }
    
    ListNode *detectCycle(ListNode *L)
    {
        if(L==NULL)
            return NULL;
        ListNode *pre=L;
        ListNode *p=L;
        while(p&&p->next)
        {
            p=p->next->next;
            pre=pre->next;
            if(pre==p)
                break;
        }
        if(p==NULL||p->next==NULL)
            return NULL;
        p=L;
        while(p!=pre)
        {
            p=p->next;
            pre=pre->next;
        }
        return p;
    }
    
    int main()
    {
        ListNode *head=NULL;
        createList(head);
        ListNode *p=NULL;
        p=detectCycle(head);
        if(p)
            cout<<p->val<<endl;
    }
  • 相关阅读:
    hdu 4947
    hdu 4946
    hdu 4944
    hdu 4942
    hdu 4941
    PAT 【L2-011 玩转二叉树】
    PAT【L2-006 树的遍历】
    XYNUOJ 【2070: 重建二叉树】
    XYNUOJ 【1367: 二叉链表存储的二叉树】
    XYNUOJ 2390【二叉树遍历2】
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4141609.html
Copyright © 2011-2022 走看看