-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIndeksertListe.java
More file actions
75 lines (69 loc) · 2.83 KB
/
IndeksertListe.java
File metadata and controls
75 lines (69 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
class IndeksertListe <E> extends Lenkeliste<E> {
//lager IndeksterListe som en subklasse av Lenkeliste
public void leggTil (int pos, E x) throws UgyldigListeindeks{
Node ny = new Node(x);
if (0 > pos || pos > stoerrelse()) {
throw new UgyldigListeindeks(pos);
}
else if (pos == 0) {
ny.neste = start; //setter inn noden før start
start = ny;
}
else {
Node peker = start;
for (int i = 0; i<pos-1; i++){
peker = peker.neste;
}
ny.neste = peker.neste;
peker.neste = ny;
}
stoerrelse++;
}
//Metoden over legger til elementer i gitt rekkefølge.
//Først begynner vi med å lage Noden, og gå gjennom if/else setningene
//Hvis posisjonen som er gitt ikke er i listen, sender vi beskjed
//ellers går den videre og sjekker om posisjonen er 0, slik at vi lett kan legge den til foran i listen
//Ellers går den videre. Her iterer vi gjennom listen til posisjonen som er gitt ved for-løkke
//som til slutt legger til elementet til riktig posisjon og øker stoerrelse
public void sett (int pos, E x) throws UgyldigListeindeks{
if (pos < 0 || pos >= stoerrelse()){
throw new UgyldigListeindeks(pos);
}
Node node = start;
for (int i = 0; i < pos; i++){
node = node.neste;
}
node.data = x;
}
// i sett metoden sjekker jeg om posisjonen som er gitt er innenfor mengden
//videre iterer jeg gjennom listen til jeg kommer til posisjonen som er gitt, og endrer elementet med den som er gitt
public E hent (int pos) throws UgyldigListeindeks {
if (pos < 0 || pos >= stoerrelse()){
throw new UgyldigListeindeks(pos);
}
Node peker = start;
for (int i = 0; i < pos; i++){
peker = peker.neste;
}
return peker.data;
}
//I hent metoden sjekekr jeg om posisjonen er innenfor mengden
//Hvis det er innenfor mengden, iterer jeg til gitt posisjon og returnerer ved å kalle på data
public E fjern (int pos) throws UgyldigListeindeks {
if (pos > 0 && pos < stoerrelse()){
Node peker = start;
for (int i = 0; i<pos-1; i++){
peker = peker.neste;
}
E data;
data = peker.neste.data;
peker.neste = peker.neste.neste;
stoerrelse--;
return data;
}
throw new UgyldigListeindeks(pos); //skriv på en bedre måte
}
//i fjern metoden iterer jeg til gitt posisjon i parameteren
//videre lager jeg data noden som skal fjernes, også fjerner jeg noden ved å hoppe over den
//til slutt tar jeg bort én stoerrelse og returnerer data
}