University stuff.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

LenkeListe.java 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import java.util.Iterator;
  2. class LenkeListe<E extends Comparable<E>> implements Iterable<E> {
  3. public Node first;
  4. public Node last;
  5. public class Node<T extends Comparable<T>> {
  6. public Node next;
  7. public Node prev;
  8. public E val;
  9. Node(E val) {
  10. this.val = val;
  11. }
  12. }
  13. public boolean tom() {
  14. return first == null;
  15. }
  16. public void leggTil(E val) {
  17. Node<E> n = new Node<>(val);
  18. if (first == null)
  19. first = n;
  20. if (last == null) {
  21. last = n;
  22. } else {
  23. n.prev = last;
  24. last.next = n;
  25. last = n;
  26. }
  27. }
  28. public void fjernMinste() {
  29. Node smallest = first;
  30. Node n = first;
  31. while (n != null) {
  32. if (n.val.compareTo(smallest.val) < 0) {
  33. smallest = n;
  34. }
  35. n = n.next;
  36. }
  37. fjern(smallest);
  38. }
  39. public boolean inneholder(E val) {
  40. for (E e: this) {
  41. if (e.compareTo(val) == 0)
  42. return true;
  43. }
  44. return false;
  45. }
  46. public void fjern(Node n) {
  47. n.prev.next = n.next;
  48. n.next.prev = n.prev;
  49. if (n == first) {
  50. first = n.next;
  51. }
  52. if (n == last) {
  53. last = n.prev;
  54. }
  55. }
  56. private class ListIterator<T extends Comparable<T>> implements Iterator<T> {
  57. private Node nextNode = first;
  58. @Override
  59. public boolean hasNext() {
  60. return nextNode != null;
  61. }
  62. @Override
  63. public T next() {
  64. Node n = nextNode;
  65. nextNode = n.next;
  66. return (T)n.val;
  67. }
  68. @Override
  69. public void remove() {
  70. throw new UnsupportedOperationException();
  71. }
  72. }
  73. //Iterator, foreach loops
  74. @Override
  75. public Iterator<E> iterator() {
  76. return new ListIterator<E>();
  77. }
  78. }