01/10/2018, 14:07

Đọc ghi dữ liệu từ file

Em có đoạn code sau, Duyệt đồ thị DFS (danh sách kề). Mọi người ai biết đọc ghi file, hướng dẫn em với ạ, em muốn dùng file để đọc đỉnh các cạnh của nó , mà em chưa biết làm thế nào, cho hợp lý.
Em cám ơn ạ.

import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedList;
 
class Graphs {
 
	public static void main(String[] args) throws IOException {
		Graph g = new Graph(6);
		g.addEdge(0, 1);
		g.addEdge(0, 2);
		g.addEdge(0, 4);
 
		g.addEdge(1, 0);
		g.addEdge(1, 2);
		g.addEdge(1, 4);
 
		g.addEdge(2, 0);
		g.addEdge(2, 1);
		g.addEdge(2, 3);
 
		g.addEdge(3, 2);
		g.addEdge(3, 4);
		g.addEdge(3, 5);
 
		g.addEdge(4, 0);
		g.addEdge(4, 1);
		g.addEdge(4, 3);
		g.addEdge(4, 5);
 
		g.addEdge(5, 3);
		g.addEdge(5, 4);
 
		g.DFS(0);
	}
 
}
 
class Graph {
	private int V;
	private LinkedList<Integer> adj[];
 
 
	// Contructor
	public Graph(int v) {
		V = v;
		adj = new LinkedList[v];
		for (int i = 0; i < v; i++) {
			adj[i] = new LinkedList();
		}
	}
	// addEdge
	public void addEdge(int u, int v) {
		adj[u].add(v);
	}
 
	// DFS traversal
	public void DFSUtil(int v, boolean visited[]) {
		visited[v] = true;
		System.out.println(v + " ");
		Iterator<Integer> i = adj[v].iterator();
		while (i.hasNext()) {
			int n = i.next();
			if (!visited[n]) {
				DFSUtil(n, visited);
			}
		}
 
	}
	// DFS
	public void DFS(int v) {
		 boolean visited[] = new boolean[V];
		 DFSUtil(v,visited);
	}
 
}
Hung viết 16:20 ngày 01/10/2018

Cấu trúc gần như vậy nè.

public class Graph {
  public static class IO {
    public static Graph readFromFile(File file) throws IOException {
      // ...
    }
  }
}

hoặc chia theo namespace

package datastructure.graph;

public class Graph {
}

package datastructure.graph.io;

import datastructure.graph;

public class GraphIO {
  public static Graph readFromFile(File file) throws IOException {
    // ...
  }
}
Giang Phan viết 16:15 ngày 01/10/2018

Bạn có thể lưu các cạnh trên từng dòng như sau:
0,1
0,2
0,4

Sử dụng lớp Reader của Java để đọc từng line, sau đó dùng hàm split() theo dấu phẩy để được 2 số.
Đọc file trong Java bạn xem ở bài viết này:

GP Coder – 13 Dec 17

Hướng dẫn sử dụng luồng vào ra ký tự trong Java - GP Coder (Lập trình Java)

Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI.

Bài liên quan
0