Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Re:请大家帮我看下 这个程序 谢谢 [Re:hawkie]
undefined





发贴: 22
积分: 3
于 2005-06-02 22:43 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
import java.io.*;

public class GraphTest {
  public static void main(String[] args) {
    Graph G = new Graph(5, false);
    GraphDFS show = new GraphDFS(G);
  }
}

class GraphDFS {
  private boolean[] visited;
  int i;

  public GraphDFS(Graph G) {
    visited = new boolean[G.getVexs()];
    for (i = 0; i < visited.length; i++)
      visited[i] = false;
    for (i = 0; i < G.getVexs(); i++)
      if (!visited[i])
        DFS(G, i);
  }
  private void DFS(Graph G, int i) {
    System.out.println(G.Nodes[i].value);
    visited[i] = true;
    while (!G.Nodes[i].adj.eof()) {
      if (!visited[G.Nodes[i].adj.value()])
        DFS(G, G.Nodes[i].adj.value());
      G.Nodes[i].adj.goNext();
    }
  }

}
class Graph {
  private int vexCount;
  private int edgeCount;
  private boolean digraph;
  public gNode[] Nodes=null;

  public Graph(int v, boolean isDig) {
    vexCount = v;
    edgeCount = 0;
    digraph = isDig;
    Nodes = new gNode[vexCount];
    System.out.println(vexCount);
    for (int i = 0; i < vexCount; i++) {
      System.out.println("请输入第" + (i + 1) + "个顶点的值:");
      Nodes[i]=new gNode(input.getInt());
      //Nodes[i].setValue(input.getInt());
      //System.out.println("GGGGGGGGGGGGG");
    }
    System.out.println("\n请输入边数:");
    int e = input.getInt();
    for (int i = 0; i < e; i++) {
      System.out.println("请输入第" + (i + 1) + "条边的起始顶点序号:");
      int ve = input.getInt();
      System.out.println("请输入第" + (i + 1) + "条边的终止顶点序号:");
      int w = input.getInt();
      addEdge(ve, w);
    }
  }

  int getVexs() {
    return vexCount;
  }
  int getEdges() {
    return edgeCount;
  }
  boolean isDigraph() {
    return digraph;
  }

  void addEdge(int v, int w) {
    if(v<vexCount)
    {
      Nodes[v].adj.addWilted Rose;
    }else
    {
      System.out.println("ERROR");
    }
    
    if (!isDigraph()) {
      if(w<vexCount)
      {
        Nodes[w].adj.add(v);
        edgeCount++;
      }else
      {
        System.out.println("ERROR");
      }
      
    }
    edgeCount++;
  }
}

class gNode //图中的顶点
{
  public int value;
  public adjList adj;
  public gNode(int v) {
    value = v;
    adj = new adjList();
  }
  public void setValue(int v)
  {
    value=v;
  }
}

class adjList //邻接表
{
  private gEdge e, current;
  public adjList() {
    e = null;
    current = e;
  }
  public void add(int vex) {
    e = new gEdge(vex, 0, e);
    current = e;
  }
  public void add(int vex, int weight) {
    e = new gEdge(vex, weight, e);
    current = e;
  }
  public int value() {
    return current.v;
  }
  public int weight() {
    return current.weight;
  }
  public void goNext() {
    if (!eof())
      current = current.next;
  }
  public void goFirst() {
    current = e;
  }
  public boolean eof() {
    return current == null;
  }

}

class gEdge //邻接表中的结点
{
  int v, weight;
  gEdge next;
  public gEdge(int vex, int w, gEdge g) {
    v = vex;
    weight = w;
    next = g;
  }
}

class input {
  static BufferedReader br =
    new BufferedReader(new InputStreamReader(System.in));
  static String s;
  static int p;
  public input() {
    s = "";
    p = 0;
  }
  public static String getString() {
    try {
      s = br.readLine();
    } catch (IOException e) {
      System.out.println("IO Error !");
    };
    return s;
  }
  public static int getInt() {
    String t;
    t = getString();
    try {
      p = Integer.valueOf(s.trim()).intValue();
    } catch (NumberFormatException e) {
      // 您的输入有误
      return 0;
    }
    return p;
  }
}




话题树型展开
人气 标题 作者 字数 发贴时间
6252 请大家帮我看下这个程序 谢谢(空指针异常 Graph) hawkie 3220 2005-05-30 12:34
5125 Re:请大家帮我看下 这个程序 谢谢 hawkie 48 2005-05-30 17:10
5537 Re:请大家帮我看下 这个程序 谢谢 undefined 3392 2005-06-02 22:43
5400 Re:请大家帮我看下 这个程序 谢谢 undefined 370 2005-06-02 22:50

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923