| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:判断链表是否有环
只看楼主 加入收藏
lmq14
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:3
专家分:10
注 册:2014-11-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
判断链表是否有环
有一个链表,我们需要判断链表中是否存在环。有环则输出true,否则输出false。
输入有多行,每行为由空格分隔的两个整数m和n,m是当前结点的数据,n代表当前结点的指针域指向第n个结点。
n存在四种情形:
①为-1,代表该结点的指针域指向NULL,输入结束;
②指向该结点之前的结点,如第3个结点的指针域指向n = 2的结点;
③指向自己,如第3个结点的指针域指向n = 3的结点;
④指向其直接后继结点,如第3个结点的指针域指向n = 4的结点,不能指向n = 5的结点
PS:本人大一学生,想早点学完C++,但时间不够也没有经验,往往碰上一个难题就要想很久,希望大家不吝赐教
判断是否有环的一般方法知道了,但我不知道怎么构造这个链表,m该怎么理解,难道是第几个结点
而且n的多种情况该如何处理
下面是我的尝试
#include<iostream>
using namespace std;
struct List
{
    int num;
    List *next;
};
List *head=NULL;
void Create(){
    List *p=NULL, *q=NULL, *r=NULL;
    int m, n, x=0;
    p=new List;
    cin>>p->num>>n;
    x++;
    head=p;
    head->next=NULL;
    q=p;
    while(n!=-1){
        if(n==x-1){
            r=head;
            while(r->next!=q)
                r=r->next;
            q->next=r;   
        }
        if(n==x){
            q->next=q;
        }
        int g=0;
        if(n==x+1){
            p=new List;
            cin>>p->num>>n;
        x++;
            q->next=p;
            q=p;
        }
    }
    q->next=NULL;
}
bool circle(){
    if(head==NULL)
        return false;
    if((head!=NULL)&&(head->next==NULL))
        return false;
    if((head!=NULL)&&(head->next==head))
        return true;
    List *p=head;
    List *q=head->next;
    while((p->next!=NULL)&&(q->next!=NULL)&&(p!=q)){
        p=p->next;
        q=q->next->next;
    }
    if(p==q)return true;
    return false;
}
int main()
{
    Create();
    if(circle())cout<<"true";
    else cout<<"false";
    return 0;
}
样例输入
1 2
3 3
4 2
5 -1
样例输出
true
搜索更多相关主题的帖子: 大一学生 false 
2014-11-13 15:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:20 
对于
m1 n1
m2 n2
m3 n3
……
mi -1
这样的输入而言,若 n1,n2,n3……,-1 不是 2,3,4,……,-1,那就是存在环
2014-11-14 08:46
lmq14
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:3
专家分:10
注 册:2014-11-13
收藏
得分:0 
回复 2 楼 rjsp
那我如果要按要求构造链表怎么弄,能逐个构造节点吗,还是要先定义一个动态数组存着结点指针
2014-11-14 13:21
快速回复:判断链表是否有环
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014125 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved