Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

****WRITTEN IN JAVA. MUST INCORPORATE A STACK OR QUEUE**** A file has genealogy

ID: 3906464 • Letter: #

Question

****WRITTEN IN JAVA. MUST INCORPORATE A STACK OR QUEUE****

A file has genealogy data for a collection of N people. The first line of the file contains the integer N followed by N additional lines of data. Each of these additional lines specifies a list of children for a single person. The line starts with the name of the person, followed by the number of that person's children, followed by the names of the children. Here is an example of a file specifying genealogy information for ten people.

For example, Al has three children named Beth, Carol, and Dino; Beth has one child named Pablo; and Dino has no children. You may assume that all names are unique.

Write a program which reads a file of genealogy information and then allows the user to enter pairs of names X and Y. The program then determines whether Y is a descendant of X, and if so, prints a list of names beginning with X and ending with Y, such that each person in the chain is a child of the person preceding them on the list. Otherwise, the program states that Y is not a descendant of X.

Explanation / Answer

public class ReadDataFromFile {
   /**
   * @param args
   */
   public static void main(String[] args) {

       Scanner scanner = null;
       try {
           scanner = new Scanner(new File("data.txt"));
           String N = (String) scanner.next();
           // gets count from file
           System.out.println(N);
           while (scanner.hasNext()) {
               // read name
               String name = (String) scanner.next();
               // read count
               int childCount = Integer.parseInt(scanner.next());

               System.out.print(name + " " + childCount);
               // repeat reading child name upto childCount
               for (int i = 1; i <= childCount; i++)
                   System.out.print(" " + scanner.next());
               System.out.println();
           }
       } catch (Exception e) {
           // TODO: handle exception
       } finally {

           if (scanner != null)
               scanner.close();
       }
   }
}

OUTPUT:

10
Al 3 Beth Carol Dino
Beth 1 Pablo
Carol 3 Ben Alex Mary
Dino 0
Pablo 2 Angela Miguel
Ben 0
Alex 0
Mary 0
Angela 0
Miguel 0