隨筆-1  評論-44  文章-3  trackbacks-0

          廢話不多說,直接上代碼

          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,否則就會出問題了,呵呵

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

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


          網站導航:
           
          主站蜘蛛池模板: 沭阳县| 松原市| 宝清县| 临沧市| 永靖县| 平南县| 荃湾区| 衡南县| 石泉县| 梅河口市| 栾川县| 洪雅县| 马公市| 中宁县| 革吉县| 柞水县| 泸州市| 呈贡县| 正阳县| 长垣县| 左贡县| 平乐县| 尉氏县| 镶黄旗| 苗栗县| 凭祥市| 文登市| 高碑店市| 泽库县| 平顶山市| 手机| 贞丰县| 巢湖市| 贵定县| 康平县| 沅江市| 镇安县| 图木舒克市| 鹿邑县| 弥勒县| 尖扎县|