Advertisement
Guest User

Untitled

a guest
Dec 13th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.70 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package grp24_ueb04;
  7.  
  8. /**
  9. * @author iam102683 Leon Singh
  10. * @author iam101589 Max Hasson
  11. */
  12. public class Element {
  13.  
  14. private int value;
  15. private Element next;
  16.  
  17. /**
  18. * Getter-Methode der Instanzvariable value
  19. *
  20. * @return Wert der Instanzvariable value
  21. */
  22. public int getValue() {
  23. return this.value;
  24. }
  25.  
  26. /**
  27. * Setter-Methode der Instanzvariable value
  28. *
  29. * @param value Wert den value bekommt
  30. */
  31. public void setValue(int value) {
  32. this.value = value;
  33. }
  34.  
  35. /**
  36. * Getter-Methode der Instanzvariable next
  37. *
  38. * @return next nächstes Element
  39. */
  40. public Element getNext() {
  41. return this.next;
  42. }
  43.  
  44. /**
  45. * Setter-Methode der Instanzvariable next
  46. *
  47. * @param next nächstes Element
  48. */
  49. public void setNext(Element next) {
  50. this.next = next;
  51. }
  52.  
  53. /**
  54. * Anhängen eines neuen Listenelements hinter den vorhandenen
  55. * Listenelementen
  56. *
  57. * @param value Wert des anzuhängenden Listenelementes
  58. * @return Liste mit angehägten Listenelement
  59. */
  60. public Element appendElement(int value) {
  61. if (this.next == null) { //Prüft ob nächstes Element null ist.
  62. this.next = new Element();
  63. this.next.setValue(value); //Wenn ja wird nächstes Element value zugewiesen.
  64. } else {
  65. this.next = this.next.appendElement(value); //Wenn Wert im nächsten Element vorhanden ist, soll die Funtkion mit dem nächsten Element nochmal aufgerufen werden.
  66. }
  67. return this;
  68. }
  69.  
  70. /**
  71. * Sortiertes Einfügen eines neuen Listenelements
  72. *
  73. * @param value Wert des anzuhängenden Listenelementes
  74. * @return Liste mit sortiert eingefügtem Listenelement
  75. */
  76. public Element insertElement(int value) {
  77. if (this.value >= value) { // Prüft ob derzeiter Wert größer oder gleich value ist.
  78. Element newElement = new Element();
  79. newElement.setValue(value);// Wenn ja, sollen die Werte vertauscht werden.
  80. newElement.setNext(this);
  81. return newElement;
  82. } else if (this.next == null) { //Wenn das nächste Element null ist, soll value darin eingefügt werden.
  83. Element newElement = new Element();
  84. newElement.setValue(value);
  85. this.next = newElement;
  86. return this;
  87. } else {
  88. this.next = this.next.insertElement(value);// Wenn nichts zutrifft soll insertElement mit dem nächsten Element geöffnet werden.
  89. return this;
  90. }
  91. }
  92.  
  93. /**
  94. * Löscht ein Listenelement
  95. *
  96. * @param value Wert des zu löschenden Listenelementes
  97. * @return Liste ohne zu löschenden Listenelement; unveränderte Liste, wenn
  98. * Listenelement nicht vorhanden
  99. */
  100. public Element deleteElement(int value) {
  101. if (this.value == value) { //Wenn derzeitiger Wert gleich ist mit value, soll die Liste ab den nächsten Element zurück gegeben werden.
  102. return this.next; //
  103. } else {
  104. if (this.next != null && this.next.value <= value) { //Wenn nächstes Element nicht leer ist, und der nächste Wert kleiner gleich als value ist:
  105. this.next = this.next.deleteElement(value);//Dann soll die Rekursion mit dem nächsten Element fortfahren.
  106. }
  107. return this;
  108. }
  109. }
  110.  
  111. /**
  112. * Gibt die Liste per println aus
  113. */
  114. public void printList() {
  115. System.out.println(value);
  116. if (this.next != null) {
  117. this.next.printList();
  118. }
  119. }
  120.  
  121. /**
  122. * berechnet die Anzahl der Elemente
  123. *
  124. * @return Anzahl der Elemente
  125. */
  126. public int size() {
  127. if (this.next == null) { // Abbruchbedingung der Rekursion
  128. return 1;
  129. } else {
  130. return 1 + this.next.size(); //Wird mit jedem Aufruf um 1 erhört.
  131. }
  132. }
  133.  
  134. /**
  135. * berechnet die Summe der Werte dieses und aller folgenden Elemente
  136. *
  137. * @return Summe
  138. */
  139. public int sum() {
  140. if (this.next == null) { // Abbruchbedingung der Rekursion
  141. return this.value;
  142. } else {
  143. return this.value + this.next.sum(); // Rechnet die Werte zusammen.
  144. }
  145. }
  146.  
  147. /**
  148. * prüft, ob der Wert des folgenden Elemetes oder der fogenden Elemente
  149. * keinen kleineren Wert hat
  150. *
  151. * @return true, wenn kein Element folgt oder die folgenden Elemente jeweils
  152. * keinen kleineren Wert enthalten als ihr Vorgänger
  153. */
  154. public boolean isSorted() {
  155. if (this.next == null) { // Wenn am Ende angekommen, soll true zurück gegeben werden.
  156. return true;
  157. } else {
  158. if (this.value > this.next.value) { //Wenn derzeitiger Wert größer als der Wert im nächsten Element ist, soll false zurück gegeben werden.
  159. return false;
  160. }
  161. return this.next.isSorted(); //Geht alle Elemente mit einer Rekursion durch.
  162. }
  163. }
  164.  
  165. /**
  166. * prüft, ob ein übergebener Wert den Wert dieses oder eines der folgenden
  167. * Elemente enhält
  168. *
  169. * @param value Wert der geprüft werden soll
  170. * @return true, wenn dieses oder eines der folgenden Elemente den
  171. * übergebenen Wert enthält
  172. */
  173. public boolean existsElement(int value) {
  174. if (this.value == value) { // Wenn gleicher Wert gefunden soll true zurück gegeben werden.
  175. return true;
  176. } else {
  177. if (this.next == null|| this.next.value > value) {//Wenn am Ende angekommen und kein gleicher Wert gefunden, oder Nächster Wert schon größer als Value ist, soll false zurück gegeben werden.
  178. return false;
  179. }
  180. return this.next.existsElement(value); // Rekursion --> Ruft nächstes Element auf.
  181. }
  182. }
  183.  
  184. /**
  185. * liefert einen String mit diesem Wert und jeweils durch ein Leerzeichen
  186. * getrennt alle folgenden Werte
  187. *
  188. * @return String
  189. */
  190. public String showValues() {
  191. if (this.next == null) { // Abbruchbedingung der Rekursion
  192. return String.valueOf(this.value);
  193. } else {
  194. return String.valueOf(this.value) + " " + String.valueOf(this.next.showValues()); // Geht alle Elemente mit einer Rekursion durch und speichert sie als String getrennt durch einen Leerzeichen ein.
  195. }
  196. }
  197.  
  198. /**
  199. * liefert den Wert an der Stelle index
  200. *
  201. * @param index Index
  202. * @return Wert an der Stelle von index; index ungültig, Integer.MAX_VALUE
  203. */
  204. public int getValueAt(int index) {
  205. if (index != 0 && this.next == null) { // Wenn index 0 noch nicht erreicht wurde, aber der nächste index schon null ist, da gibt es den index(Parameter) nicht.
  206. return Integer.MAX_VALUE;// Maximaler Integer Wert wird zurück gegeben.
  207. } else {
  208. if (index == 0) { //Abbruchbedingung der Rekursion --> Return der Wert am Index
  209. return this.value;
  210. }
  211. return this.next.getValueAt(index - 1); // Wenn Index 0 nicht erreicht wurde, soll index um 1 verkleinert werden.
  212. }
  213. }
  214.  
  215. /**
  216. * fügt ein neues Element mit dem übergebenen Wert an der Stelle index ein
  217. *
  218. * @param value Wert der eingefügt werden soll
  219. * @param index Stelle, an der der Wert eingefügt werden soll
  220. * @return Liste mit eingefügtem Listenelement; Liste mit angehägtem
  221. * Listenelement, wenn Index = Arraylänge; Listenelement und alle Folgenden
  222. * unverändert, wenn index ungültig
  223. */
  224. public Element insertElementAt(int value, int index) {
  225. if (index == 1 && this.next == null) {
  226. return appendElement(value);
  227. } else if (index == 0) {
  228. Element newElement = new Element();
  229. newElement.setValue(value);
  230. newElement.setNext(this);
  231. return newElement;
  232. } else if (this.next != null) {
  233. this.next = this.next.insertElementAt(value, index - 1);
  234. }
  235. return this;
  236. }
  237.  
  238. /**
  239. * fügt ein Element mit dem Wert value an den Anfang der Liste
  240. *
  241. * @param value einzufügender Wert
  242. * @return Liste mit angefügten Element
  243. */
  244. public Element insertElementAtFront(int value) {
  245. return this.insertElementAt(value, 0);
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement