隨筆-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)編輯 收藏
          主站蜘蛛池模板: 呼图壁县| 上蔡县| 望奎县| 马关县| 榆中县| 温泉县| 衡阳县| 凉山| 华蓥市| 阜新市| 大邑县| 娱乐| 郴州市| 焉耆| 增城市| 玛曲县| 温州市| 原阳县| 阿坝县| 田东县| 丹棱县| 顺昌县| 高安市| 嘉义县| 河曲县| 安塞县| 阳春市| 莱芜市| 崇礼县| 礼泉县| 安陆市| 黄浦区| 宜良县| 南阳市| 乌审旗| 汝城县| 仪陇县| 肃北| 论坛| 潞城市| 乐清市|