1、Java语言程序设计基础篇第10版 梁勇 著第二十八章练习题答案Java语言程序设计(基础篇)(第10版 梁勇 著)第二十八章 练习题答案28.1 public class Exercise28_01 public static void main(String args) throws Exception java.util.Scanner input = new java.util.Scanner(System.in); System.out.print(Enter a file name: ); java.io.File file = new java.io.File(input.nex
2、tLine(); if (!file.exists() System.out.println(File does not exist); System.exit(1); java.util.Scanner inFile = new java.util.Scanner(file); / Read the number of vertices String s = inFile.nextLine(); int numberOfVertices = Integer.parseInt(s); System.out.println(The number of vertices is + numberOf
3、Vertices); java.util.List list = new java.util.ArrayList(); while (inFile.hasNext() s = inFile.nextLine(); String tokens = s.split(s+); int startingVertex = Integer.parseInt(tokens0.trim(); for (int i = 1; i tokens.length; i+) int adjacentVertex = Integer.parseInt(tokensi.trim(); list.add(new Abstra
4、ctGraph.Edge(startingVertex, adjacentVertex); Graph graph = new UnweightedGraph(list, numberOfVertices); graph.printEdges(); AbstractGraph.Tree tree = graph.dfs(0); if (tree.getNumberOfVerticesFound() = numberOfVertices) System.out.println(The graph is connected); else System.out.println(The graph i
5、s not connected); 28.2 public class Exercise28_02 public static void main(String args) throws java.io.FileNotFoundException String vertices = Seattle, San Francisco, Los Angeles, Denver, Kansas City, Chicago, Boston, New York, Atlanta, Miami, Dallas, Houston; int edges = 0, 1, 0, 3, 0, 5, 1, 0, 1, 2
6、, 1, 3, 2, 1, 2, 3, 2, 4, 2, 10, 3, 0, 3, 1, 3, 2, 3, 4, 3, 5, 4, 2, 4, 3, 4, 5, 4, 7, 4, 8, 4, 10, 5, 0, 5, 3, 5, 4, 5, 6, 5, 7, 6, 5, 6, 7, 7, 4, 7, 5, 7, 6, 7, 8, 8, 4, 8, 7, 8, 9, 8, 10, 8, 11, 9, 8, 9, 11, 10, 2, 10, 4, 10, 8, 10, 11, 11, 8, 11, 9, 11, 10 ; java.io.PrintWriter output = new java
7、.io.PrintWriter(Exercise28_02.txt); int numberOfVertices = vertices.length; output.println(numberOfVertices); for (int startingVertex = 0; startingVertex numberOfVertices; startingVertex+) output.print(startingVertex + ); int count = 0; for (int i = 0; i 0) output.println(); System.out.println(Done!
8、); output.close(); 28.4 import java.util.*;public class Exercise28_04 public static void main(String args) String vertices = Seattle, San Francisco, Los Angeles, Denver, Kansas City, Chicago, Boston, New York, Atlanta, Miami, Dallas, Houston, Savannah, Charlston ; int edges = 0, 1 , 0, 3 , 0, 5 , 1,
9、 0 , 1, 2 , 1, 3 , 2, 1 , 2, 3 , 2, 4 , 2, 10 , 3, 0 , 3, 1 , 3, 2 , 3, 4 , 3, 5 , 4, 2 , 4, 3 , 4, 5 , 4, 7 , 4, 8 , 4, 10 , 5, 0 , 5, 3 , 5, 4 , 5, 6 , 5, 7 , 6, 5 , 6, 7 , 7, 4 , 7, 5 , 7, 6 , 7, 8 , 8, 4 , 8, 7 , 8, 9 , 8, 10 , 8, 11 , 9, 8 , 9, 11 , 10, 2 , 10, 4 , 10, 8 , 10, 11 , 11, 8 , 11,
10、9 , 11, 10 , 12, 13 , 13, 12 ; MyGraph graph = new MyGraph(edges, vertices); AbstractGraph.Tree dfs = graph.dfs(graph.getIndex(Chicago); System.out.println(graph.getConnectedComponents(); public static class MyGraph extends UnweightedGraph /* Construct an empty graph */ public MyGraph() /* Construct
11、 a graph from edges and vertices stored in arrays */ public MyGraph(int edges, V vertices) super(vertices, edges); /* Construct a graph from edges and vertices stored in List */ public MyGraph(List vertices, List edges) super(vertices, edges); /* Construct a graph for integer vertices 0, 1, 2 and ed
12、ge list */ public MyGraph(List edges, int numberOfVertices) super(edges, numberOfVertices); /* Construct a graph from integer vertices 0, 1, and edge array */ public MyGraph(int edges, int numberOfVertices) super(edges, numberOfVertices); public ListList getConnectedComponents() ListList list = new
13、ArrayListList(); List vertexIndices = new ArrayList(); for (int i = 0; i 0) Tree tree = dfs(vertexIndices.get(0); list.add(tree.getSearchOrder(); vertexIndices.removeAll(tree.getSearchOrder(); return list; 28.10 public class Exercise28_10 public static void main(String args) throws Exception java.ut
14、il.Scanner input = new java.util.Scanner(System.in); System.out.print(Enter a file name: ); java.io.File file = new java.io.File(input.nextLine(); if (!file.exists() System.out.println(File does not exist); System.exit(1); System.out.print(Enter two vertices (integer indexes): ); int v1 = input.next
15、Int(); int v2 = input.nextInt(); java.util.Scanner inFile = new java.util.Scanner(file); / Read the number of vertices String s = inFile.nextLine(); int numberOfVertices = Integer.parseInt(s); System.out.println(The number of vertices is + numberOfVertices); java.util.List list = new java.util.Array
16、List(); while (inFile.hasNext() s = inFile.nextLine(); String tokens = s.split(s+); int v = Integer.parseInt(tokens0.trim(); for (int i = 1; i tokens.length; i+) int adjacentVertex = Integer.parseInt(tokensi.trim(); list.add(new AbstractGraph.Edge(v, adjacentVertex); Graph graph = new UnweightedGrap
17、h(list, numberOfVertices); graph.printEdges(); AbstractGraph.Tree tree = graph.bfs(v1); java.util.List path = tree.getPath(v2); System.out.print(The path is ); for (int i = 0; i solutionPane.getChildren().clear(); / Get a shortest path java.util.List list = model .getShortestPath(NineTailModel .getI
18、ndex(initialNodePane.getNode(); / Display nodes in the shortest path for (int i = 0; i solutionPane.getChildren().clear(); solutionPane.getChildren().add(initialNodePane); / Display initial node ); /* * The main method is only needed for the IDE with limited * JavaFX support. Not needed for running
19、from the command line. */ public static void main(String args) launch(args); /* * An inner class for displaying a node on a grid pane */ static class NodePane extends GridPane public NodePane(char node) this.setStyle(-fx-border-color: black); for (int i = 0; i 9; i+) add(new Cell(nodei + ), i % 3, i
20、 / 3); public NodePane(char newNode, char oldNode) this.setStyle(-fx-border-color: black); for (int i = 0; i 9; i+) if (newNodei = oldNodei) add(new Cell(newNodei + , Color.BLACK), i % 3, i / 3); else add(new Cell(newNodei + , Color.RED), i % 3, i / 3); /* * An inner class for displaying a cell */ s
21、tatic class Cell extends Label public Cell(String s) this.setFont(new Font(Times, 40); setText(s); public Cell(String s, Color color) this.setFont(new Font(Times, 40); this.setTextFill(color); setText(s); /* * An inner class for displaying the initial node */ static class InitialNodePane extends GridPane / Each cell represents a coin, which can be flipped ClickableCell clickableCells = new ClickableCell33; publi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1