表结构:
IP1    IP2
123    456
234    986
456    234
978    907
234    876
234    907
……
主要就是字段IP1和IP2,现在要根据任意一个IP地址,来查找和这个IP地址相关的所有ip。以及和相关ip相关的所有ip,直至穷尽。我现在已经循环死掉出不来了,不知道大仙们有何高解?

解决方案 »

  1.   

    这个问题似乎是一个不动点问题,呵呵~~楼主可以这么来做:输入:一个IP地址IP0
    输出:一个集合,集合的每一个元素都是IP
    1、把IP0加入到HashSet hs和hs1中
    2、遍历hs1,对hs1中的每一个元素,都在表中查找相关的IP,查找到相关IP以后,若hs中不存在该IP,则将其加入到另一个HashSet(记为hs2)中
    3、hs=hs.addAll(hs1)  hs1=hs2  hs2=new HashSet()
    4、重复2和3的操作,直到2中产生的hs2为空说明:
    1、hs1表示用于遍历的Set,也就是说接下来找与hs1中的IP相关的IP
    2、hs2表示每次查找新增的IP(记为ip1),若hs中已存在ip1,则说明之前找过ip1的相关IP,就不把ip1加入到hs2中,否则加入hs2
    3、hs表示最终的所有相关的IP集合
    4、算法最终会终止,因为库表是有限的,也就是说IP是有限的,最终经过有限次2和3的操作以后肯定会终止,顶多是把所有的IP都加入到hs中而已。