Løsningsforslag - oppgaver i Avsnitt 4.2.4


Oppgave 2

  public String toString()
  {
    StringJoiner s = new StringJoiner(", ", "[", "]");

    Node<T> p = fra;

    for (int i = 0; i < antall; i++, p = p.neste)
    {
      s.add(p.verdi.toString());
    }

    return s.toString();
  }

Oppgave 3

  public void nullstill()  // tar vare på en del av nodene
  {
    Node<T> p = fra;
    for (int i = 1; i < START_STØRRELSE; i++)
    {
      p.verdi = null;
      if (p.neste == fra) break;
      p = p.neste;
    }

    Node<T> q = p.neste;
    while (q != fra)
    {
      q.verdi = null;
      q = q.neste;
    }

    p.verdi = null;
    til = p.neste = fra;
    antall = 0;
  }

Oppgave 4

  public static <T> void sorter(Kø<T> kø, Stakk<T> stakk, Comparator<? super T> c)
  {
    int n = kø.antall();

    while (n > 0)
    {
      stakk.leggInn(kø.taUt());       // kandidat for å være den største

      for (int i = 1; i < n; i++)
      {
        T verdi = kø.taUt();
        if (c.compare(verdi, stakk.kikk()) > 0)
        {
          kø.leggInn(stakk.taUt());   // fant en som var større - den
          stakk.leggInn(verdi);       // legges øverst på stakken
        }
        else
        {
          kø.leggInn(verdi);
        }
      }
      n--;
    }

    while (!stakk.tom()) kø.leggInn(stakk.taUt());  // flytter fra stakk til kø
  }