Hovedsiden

Innholdsfortegnelse

Kodeeksempler

Løsning på utvalgte oppgaver

Trykkfeilliste

(Nettsiden er under utvikling, mer kommer etter hvert)


 

 
  Løsningsforslag til utvalgte oppgaver

4.1-1

Noen forslag - flere kan føyes til:
Lage en brøk av to heltall.
Addere, subtrahere, multiplisere og dividere to brøker.
Beregne verdien (som desimaltall) av en brøk

4.2-1

a) Se TabellListeA.c eller TabellListeA.java
Når vi har fast kapasitet og den overskrides, vil vi i Java få ArrayIndexOutOfBoundsException. I C vil vi overskrive andre data og kan etter hvert få feilmeldingen Memory segmentation error eller liknende.

b) Se TabellListeB.c eller TabellListeB.java

4.2-2

Se TestTabellListe.c eller TestTabellListe.java. Må ha 20000 som kapasitet for å være sikker på å få plass i a.

4.3-1

C:

Node* fjernEtter(EnkelLenke* l, Node* n) {
  Node* fjernes = NULL;
  if (n) fjernes = n->neste;
  else fjernes = l->hode;
  if (fjernes) {
    l->antElementer--;
    if (fjernes == l->hode) l->hode = l->hode->neste;
  }
  return fjernes;
}
 

Java:

public Node fjernEtter(Node n) {
  Node fjernes = null;
  if (n != null) fjernes = n.neste;
  else fjernes = hode;
  if (fjernes != null) {
   --antElementer;
    if (fjernes == hode) hode = hode.neste;
    }
  return fjernes;
}

Metoden er en O(1)-metode. Denne metoden kan være nyttig hvis vi uansett må traversere lista og fjerne ett eller flere elementer, for da slipper vi å gjøre det mer enn en gang. Eksempel: Anta at vi skal fjerne alle elementer som er større enn en bestemt verdi. Da kan vi traversere lista og sjekke om denne.neste oppfyller kriteriet. I så fall utfører vi fjernEtter(denne).

4.3-4

b) og c)

4.4-1

Se Itertor.c eller Iterator.java

4-4

a) Se Sortering.c eller Sortering.java

b) Se Sortering2.c eller Sortering2.java