Pabl0o0

Untitled

Mar 17th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. package lab3;
  2.  
  3.  
  4. public class LinkedList{
  5. private Node head = new Node(null); //wartownik
  6. private int size; //rozmiar listy
  7. /**
  8. * Konstruktor domyślny, tworzy pustą listę
  9. */
  10. public LinkedList(){
  11. clear();
  12. }
  13.  
  14. public void insert(int index, Object value) throws IndexOutOfBoundsException{
  15. if (index<0 || index > size) throw new IndexOutOfBoundsException();
  16.  
  17. }
  18.  
  19. // public Object wyswietlListe(){
  20. // return Object;
  21. // }
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. /**
  31. * Metoda "czyszcząca" listę, w rzeczywistości ustawia pierwszy element listy, czyli pole next wartownika na null
  32. */
  33. public void clear(){
  34. head.setNext(null);
  35. size=0;
  36. }
  37. /**
  38. * Metoda dodająca nowy element do listy
  39. */
  40. public void add(Object value){
  41. if (head.getNext()==null) head.setNext(new Node(value)); //jeśli lista jest pusta ustawiamy następnik wartownika
  42. Node last = head.getNext();
  43. while(last.getNext() != null) //szukamy ostatniego elementu
  44. last=last.getNext();
  45. ++size;
  46. last.setNext(new Node(value)); //i ustawiamy jego następnik na nowy węzeł z podaną wartością value
  47. }
  48. /**
  49. * Metoda usuwająca obiekt podany jako parametr
  50. * @return true, gdy usunięto element, false w innym wypadku
  51. */
  52. public boolean delete(Object o){
  53. if(head.getNext() == null) return false;
  54. if(head.getNext().getValue().equals(o)){
  55. head.setNext(head.getNext().getNext());
  56. size--;
  57. return true;
  58. }
  59.  
  60. Node delete = head.getNext();
  61. while(delete != null && delete.getNext() != null){
  62. if(delete.getNext().getValue().equals(o)){
  63. delete.setNext(delete.getNext().getNext());
  64. size--;
  65. return true;
  66. }
  67. delete = delete.getNext();
  68. }
  69. return false;
  70. }
  71. /**
  72. * Metoda zwracająca obiekt o podanym indeksie na liście
  73. * @param index - indeks elementu w liście, którego wartości oczekujemy
  74. * @return - oczekiwany obiekt, lub null, gdy nie istnieje
  75. */
  76. public Object get(int index) throws IndexOutOfBoundsException{
  77. if(index<0 || index>size) throw new IndexOutOfBoundsException();
  78. Node find = head.getNext();
  79. for(int i=0; i <= index; i++)
  80. find = find.getNext();
  81. return find.getValue();
  82. }
  83. public Object set(int index, Object value) throws IndexOutOfBoundsException{
  84. if(index<0 || index>size) throw new IndexOutOfBoundsException();
  85. Node find = head.getNext();
  86. for(int i=0; i <= index; i++)
  87. find = find.getNext();
  88. find.setValue(value);
  89. return value;
  90. }
  91. /**
  92. * Metoda zwracająca aktualny rozmiar listy
  93. * @return rozmiar listy
  94. */
  95. public int size(){
  96. return size;
  97. }
  98. /**
  99. * Metoda, która sprawdza, czy lista jest pusta
  100. * @return true, gdy rozmiar listy wynosi 0, w innym wypadku false
  101. */
  102. public boolean isEmpty(){
  103. return size == 0;
  104. }
  105.  
  106. /**
  107. * Klasa wewnętrzna, która definiuje elementy przechowywane na liście
  108. */
  109. private static final class Node{
  110. private Object value; //aktualny element
  111. private Node next; //referencja na obiekt kolejny
  112. /**
  113. * Konstruktor ustawiający element na obiekt podany jako argument, wstawianie na początek listy
  114. * @param val obiekt, który chcemy przechowywać
  115. */
  116. public Node(Object val){
  117. this(val, null);
  118. }
  119. /**
  120. * Konstruktor, który pozwala wstawić element na określone miejsce
  121. * @param val obiekt, który chcemy umieścić na liście
  122. * @param n obiekt kolejny
  123. */
  124. public Node(Object val, Node n){
  125. value = val;
  126. next = n;
  127. }
  128. /**
  129. * @return aktualny obiekt
  130. */
  131. public Object getValue(){
  132. return value;
  133. }
  134. /**
  135. * @return kolejny element
  136. */
  137. public Node getNext(){
  138. return next;
  139. }
  140. /**
  141. * @param n kolejny element
  142. */
  143. public void setNext(Node n){
  144. next = n;
  145. }
  146.  
  147. public void setValue(Object o){
  148. value = o;
  149. }
  150. }
  151. }
Advertisement
Add Comment
Please, Sign In to add comment