跟小D每日学口语

判断一个链表是否有循环

 int  isLoop(List l) {
2      if ( ! l)  return   - 1 ;
3     List s  =  l.next;
4      while (s  &&  s != l)  {
5         s  =  s.next;
6     }

7      if  ( ! s)  return   - 1 ;
8      else  reutrn  1 ;
9 }

 1int isLoop(List l){
 2    if(!l) return 0;
 3    p=l.next;
 4    wihle(p!=l&&p!=null{
 5        l.next=l;
 6        l=p;p=p.next;
 7    }

 8    if(p=l) return 1;
 9    return 0;
10}

从链表头开始遍历,如果节点next指针指向自身,则循环存在;否则将next指针指向自身,遍历下一个节点。直至next指针为空,此时链表无循环。
posted @ 2009-09-10 15:19  简简单单幸福  阅读(628)  评论(0编辑  收藏  举报