隨筆-1  評(píng)論-44  文章-3  trackbacks-0

          廢話不多說(shuō),直接上代碼

          package com.primeton.eos;

          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;
          import java.util.Stack;

          public class DAG {

              
          public static Map createNode(String name) {
                  HashMap node 
          = new HashMap();
                  node.put(
          "name", name);
                  node.put(
          "child"new ArrayList());
                  
          return node;
              }


              
          public static void main(String[] args) {
                  Map start 
          = createNode("start");
                  Map node1 
          = createNode("node1");
                  Map node2 
          = createNode("node2");
                  Map node3 
          = createNode("node3");
                  Map node4 
          = createNode("node4");
                  Map node5 
          = createNode("node5");
                  Map end 
          = createNode("end");

                  ((List) start.get(
          "child")).add(node1);
                  ((List) start.get(
          "child")).add(node2);

                  ((List) node1.get(
          "child")).add(node2);
                  ((List) node1.get(
          "child")).add(node3);

                  ((List) node2.get(
          "child")).add(node3);

                  ((List) node3.get(
          "child")).add(node4);
                  ((List) node4.get(
          "child")).add(node5);
                  ((List) node5.get(
          "child")).add(start);
                  ((List) node5.get(
          "child")).add(end);

                  System.out.println(checkChild(start));
              }


              
          public static Stack<String> stack = new Stack<String>();

              
          public static boolean a = false;

              
          public static boolean checkChild(Map cursor) {
                  
          if (stack.contains(cursor.get("name"))) {
                      
          return false;
                  }

                  stack.push((String) cursor.get(
          "name"));
                  List childs 
          = (List) cursor.get("child");
                  
          if (childs != null{
                      
          for (int i = 0; i < childs.size(); i++{
                          
          if (!checkChild((Map) childs.get(i))) {
                              
          return false;
                          }

                      }

                  }

                  stack.pop();
                  
          return true;
              }

          }


           

          注意,stack中不能直接放cursor,否則就會(huì)出問(wèn)題了,呵呵

          posted on 2012-03-23 20:25 黑旋風(fēng) 閱讀(2577) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 贡嘎县| 南阳市| 泽普县| 巴林左旗| 百色市| 历史| 普格县| 正蓝旗| 建德市| 汝城县| 邵阳县| 塔城市| 姚安县| 禄丰县| 泸西县| 佛冈县| 博兴县| 易门县| 齐河县| 芜湖市| 合水县| 兴国县| 卓资县| 麻江县| 安庆市| 曲麻莱县| 石嘴山市| 汶上县| 河北区| 抚州市| 延安市| 邯郸市| 伽师县| 乐亭县| 浙江省| 通榆县| 措勤县| 彭州市| 赫章县| 玛曲县| 凉城县|