Løsningsforslag - oppgaver i Avsnitt 11.2.4


Oppgave 2

  String url = "https://www.cs.hioa.no/~ulfu/appolonius/kap11/2/vgraf1.txt";
  VMGraf vgraf = new VMGraf(url);

  String start = "A";
  vgraf.kortestVeiFra(start);
  for (String node : vgraf.nodenavn())
  {
    StringJoiner sj = new StringJoiner("");
    sj.add("Vei fra ").add(start).add(" til ")
      .add(node).add(": ").add(vgraf.veiTil(node));

    System.out.println(sj.toString());
  }

Oppgave 3

Det må stå: public final class VMGraf implements Iterable<String> øverst. Legg så flg. kode (indre klasse og metode) inn i VMGraf:

  private class MGrafIterator implements Iterator<String>  // hører til VMGraf
  {
    private int denne = 0;       // instansvariabel

    public boolean hasNext()     // sjekker om det er flere igjen
    {
      return denne < antall;     // sjekker verdien til denne
    }

    public String next()         // returnerer aktuell verdi
    {
      if (!hasNext())
        throw new NoSuchElementException("Tomt eller ingen verdier igjen!");
      return snavn[denne++];
    }
  }  // MGrafIterator  

  public Iterator<String> iterator()
  {
    return new MGrafIterator();
  }

Oppgave 4

  public void skrivGraf(String filnavn) throws IOException
  {
    PrintWriter ut = new PrintWriter(filnavn);

    for (int i = 0; i < antall; i++)
    {
      ut.print(snavn[i]);

      int rad = indeks[i];
      for (int kolonne = 0; kolonne < antall; kolonne++)
      {
        byte vekt = graf[rad][kolonne];
        if (vekt != IKKE_KANT) ut.print(" " + navn[kolonne] + " " + vekt);
      }
      ut.println();
    }

    ut.close();
  }