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
|