Løsningsforslag Oppgavesett 6
Fra Hiofwiki
Innhold |
[rediger]
Gruppe i
[rediger]
Oppgave 6.1
package Sett6;
import java.util.LinkedList;
/**
*
* @author Erik Eiesland <erik.eiesland@hiof.no>
*/
public class MyQueue <E extends Comparable<? super E>> implements Queue<E>
{
LinkedList<E> list = new LinkedList<E>();
public void enqueue(E element)
{
list.addLast(element);
}
public E dequeue()
{
return list.removeFirst();
}
public E first()
{
return list.getFirst();
}
public boolean isEmpty()
{
return list.isEmpty();
}
public int size()
{
return list.size();
}
public void enqueueAll(MyQueue<E> q)
{
int j = q.size();
for (int i=0; i < j; i++)
{
list.addLast(q.dequeue());
}
}
}
package Sett6;
import java.io.File;
import java.util.Arrays;
import java.util.List;
/**
*
* @author Erik Eiesland <erik.eiesland@hiof.no>
*/
public class FileLister
{
public static void main(String[] args)
{
MyQueue<File> q = getFileListing(new File(args[0]));
int j = q.size();
for (int i=0; i<j; i++)
{
System.out.println(q.dequeue());
}
}
public static MyQueue<File> getFileListing(File startDir)
{
MyQueue<File> q = new MyQueue<File>();
File[] fileListing = startDir.listFiles();
for (int i=0; i<fileListing.length; i++)
{
q.enqueue(fileListing[i]);
if (!fileListing[i].isFile())
{
MyQueue<File> deeperList = getFileListing(fileListing[i]);
q.enqueueAll(deeperList);
}
}
/* Alternativ løsning med List:
List<File> filesDirs = Arrays.asList(fileListing);
for(File file : filesDirs)
{
q.enqueue(file);
if (!file.isFile())
{
MyQueue<File> deeperList = getFileListing(file);
q.enqueueAll(deeperList);
}
}
*/
return q;
}
}
[rediger]
Oppgave 6.2
package Sett6;
import java.util.LinkedList;
/**
*
* @author Erik Eiesland <erik.eiesland@hiof.no>
*/
public class MyStack <E extends Comparable<? super E>> implements Stack<E>
{
LinkedList<E> list = new LinkedList<E>();
public void push(E element)
{
list.push(element);
}
public E pop()
{
return list.pop();
}
public E peek()
{
return list.peek();
}
public int size()
{
return list.size();
}
public boolean isEmpty()
{
return list.isEmpty();
}
public void mergeStack(MyStack<E> s)
{
MyStack<E> n = new MyStack<E>();
int j = s.size();
for (int i=0; i < j; i++)
{
n.push(s.pop());
list.push(n.pop());
}
}
}
package Sett6;
import java.io.File;
/**
*
* @author Erik Eiesland <erik.eiesland@hiof.no>
*/
public class FileListerStack
{
public static void main(String[] args)
{
MyStack<File> s = getFileListing(new File(args[0]));
int j = s.size();
for (int i=0; i<j; i++)
{
System.out.println(s.pop());
}
}
public static MyStack<File> getFileListing(File startDir)
{
MyStack<File> s = new MyStack<File>();
File[] fileListing = startDir.listFiles();
for (int i=0; i<fileListing.length; i++)
{
s.push(fileListing[i]);
if (!fileListing[i].isFile())
{
MyStack<File> deeperList = getFileListing(fileListing[i]);
s.mergeStack(deeperList);
}
}
return s;
}
}
[rediger]
Oppgave 6.3
...
[rediger]
Oppgave 6.4
package Sett6;
import java.util.ArrayList;
/**
*
* @author Erik Eiesland <erik.eiesland@hiof.no>
*/
public class MyNewStack <E extends Comparable<? super E>> implements Stack<E>
{
ArrayList<E> list = new ArrayList<E>();
E max;
//legger til element på slutten av listen og legger det også i max
//hvis det er større enn det som er der fra før
public void push(E element)
{
if (list.isEmpty())
{
max = element;
}
if (element.compareTo(max) > 0)
{
max = element;
}
list.add(element);
}
//fjerner siste element i listen
public E pop() {return list.remove(list.size()-1);}
//ser på siste element i lista
public E peek() {return list.get(list.size()-1);}
//returnerer størrelsen på listen
public int size() {return list.size();}
//sjekker om listen er tom
public boolean isEmpty() {return list.isEmpty();}
//returnerer maxelementet
public E max() {return max;}
}
[rediger]
Oppgave 6.5
...
[rediger]
Oppgave 6.6
...
[rediger]
Oppgave 6.7
...
