Løsningsforslag sett6
Fra Hiofwiki
Innhold |
[rediger]
Gruppe N
[rediger]
Oppgave 1
package sett6;
import java.util.*;
import java.io.*;
public class Oppgave1 {
public static void main(String[] args)
{
LinkedList<Integer> listLevels = new LinkedList<Integer>();
LinkedList<File> listFiles = new LinkedList<File>();
listFiles.add(new File(args[0]));
listLevels.add(0);
while(!listFiles.isEmpty())
{
File file = listFiles.poll();
int level = listLevels.poll().intValue();
if(file.isDirectory())
{
File[] files = file.listFiles();
for(int i=0; i<files.length; i++)
{
listFiles.add(files[i]);
listLevels.add(level + 1);
}
}
for(int i=0; i<level; i++)
System.out.print(" ");
System.out.println(file.getName());
}
}
}
[rediger]
Oppgave 2
package sett6;
import java.util.*;
import java.io.*;
public class Oppgave2 {
public static void main(String[] args)
{
LinkedList<Integer> listLevels = new LinkedList<Integer>();
LinkedList<File> listFiles = new LinkedList<File>();
listFiles.push(new File(args[0]));
listLevels.push(0);
while(!listFiles.isEmpty())
{
File file = listFiles.pop();
int level = listLevels.pop().intValue();
if(file.isDirectory())
{
File[] files = file.listFiles();
for(int i=0; i<files.length; i++)
{
listFiles.push(files[i]);
listLevels.push(level + 1);
}
}
for(int i=0; i<level; i++)
System.out.print(" ");
System.out.println(file.getName());
}
}
}
[rediger]
Oppgave 3
- Oppretter en variabel som holder på verdi
- Legger this.verdi inn i variabelen
- Kopierer this.neste.verdi til this.verdi
- Endrer this.neste til this.neste.neste (moro!)
- Returnerer variabel
[rediger]
Oppgave 4
En stakk har operasjonene empty, peek, pop, push. I tillegg til disse ønsker vi en operasjon max, som returnerer det største elementet.
Vi kan f.eks bruke ArrayList.
Vi må ha en variabel som tar vare på max-verdien.
push:
- Vi sammenligner max med den nye verdien. Er den større enn max, endrer vi max.
- Legger til i listen. (add)
peek:
- Ser på siste element i lista (get)
pop:
- Fjerner siste element i lista (remove)
empty:
- returner om listen er tom (isEmpty)
max:
- returnerer max variablen
[rediger]
Oppgave 6
//Sette inn et nytt element på en bestemt posisjon
public boolean add(E element, Integer index)
{
Node temp = start;
if(index < 0 || index > size())
{
throw new IndexOutOfBoundsException("Too bad!");
}
else
{
for(int i = 0; i < index-1; i++)
temp = temp.next;
temp.next = new Node(element, temp.next);
num++;
}
return true;
}
//Fjerne et element fra en bestemt posisjon
public E remove(int index)
{
E returnElement = null;
//Hvis lista er tom, kast unntak
if(empty())
{
throw new IndexOutOfBoundsException("The list is empty!");
}
//Sjekker om elementet er det samme som det første elementet i lista
else if(index == 0)
{
returnElement = start.value;
start = start.next;
}
else
{
Node temp = start;
for(int i = 0; i < index; i++)
temp = temp.next;
returnElement = temp.next.value;
temp.next = temp.next.next;
}
return returnElement;
}
//Iterator remove-metode.
public void remove() {
if(previous == null)
{
start = start.next;
p = p.next;
}
else if(p.next != null)
{
p.value = p.next.value;
p.next = p.next.next;
}
else
{
previous.next = null;
}
}
[rediger]
Oppgave 6.7
private class ReverseListIterator implements Iterator<E> {
private DoubleNode<E> p;
public ReverseListIterator(){
p = end;
}
public boolean hasNext() {
return (p.last != null);
}
public E next() {
E verdi = p.value;
p = p.last;
return verdi;
}
public void remove() {
if(p.next == null)
{
end = end.last;
p = p.last;
}
else if(p.last != null)
{
p.value = p.last.value;
p.last = p.last.last;
}
else
{
p.next.last = null;
}
}
