隨筆-1  評論-44  文章-3  trackbacks-0
            2012年3月23日

          廢話不多說,直接上代碼

          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 @ 2012-03-23 20:25 黑旋風 閱讀(2577) | 評論 (0)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 潜山县| 天台县| 塔河县| 大城县| 顺平县| 崇礼县| 都昌县| 教育| 大英县| 龙江县| 德庆县| 洛隆县| 南涧| 邢台县| 城口县| 洞口县| 翁源县| 保康县| 甘谷县| 兴文县| 全州县| 颍上县| 中牟县| 筠连县| 兴宁市| 阳高县| 平乐县| 栾川县| 双江| 大埔县| 巴马| 恩平市| 隆化县| 永修县| 从江县| 沈阳市| 松溪县| 广汉市| 子长县| 淳化县| 凤山市|