Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.14 KB | None | 0 0
  1. //Klassen Element und Liste, Song, SongListe und Main
  2. public class Element {
  3. private Element next;
  4. private Element prev;
  5. private String name;
  6.  
  7. public Element(String name) {
  8. this.name = name;
  9. }
  10.  
  11. public Element getNext() {
  12. return next;
  13. }
  14.  
  15. public void setNext(Element next) {
  16. this.next = next;
  17. }
  18.  
  19. public Element getPrev() {
  20. return prev;
  21. }
  22.  
  23. public void setPrev(Element prev) {
  24. this.prev = prev;
  25. }
  26.  
  27. public String getName() {
  28. return name;
  29. }
  30.  
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34.  
  35. public boolean hasNext() {
  36. if (next == null) return false;
  37. return true;
  38. }
  39.  
  40. @Override
  41. public String toString() {
  42. return name;
  43. }
  44. }
  45. //Ende Klasse Elementpublic class Liste {
  46. private Element start;
  47. private int size = 0;
  48.  
  49. public Element getStart() {
  50. return start;
  51. }
  52.  
  53. public void setStart(Element start) {
  54. this.start = start;
  55. }
  56.  
  57. public int getSize() {
  58. return size;
  59. }
  60.  
  61. public void setSize(int size) {
  62. this.size = size;
  63. }
  64.  
  65. public boolean addToPos(Element e, int pos) {
  66. if (pos > size) return false;
  67. if (size == 0) setStart(e);
  68. else {
  69. Element temp = start;
  70. for (int i = 1; i < pos; i++)temp = temp.getNext();
  71. e.setNext(temp.getNext());
  72. if (e.getNext() != null) e.getNext().setPrev(e);
  73. e.setPrev(temp);
  74. temp.setNext(e);
  75. }
  76. size++;
  77. return true;
  78. }
  79.  
  80. public void addToEnd(Element e) {
  81. //addToPos(e, getSize());
  82. if (size == 0) setStart(e);
  83. else {
  84. Element temp = start;
  85. while (temp.hasNext()) {
  86. temp = temp.getNext();
  87. }
  88. temp.setNext(e);
  89. e.setPrev(temp);
  90. }
  91. size++;
  92. }
  93.  
  94. public void addSorted(Element e) {
  95. if (size == 0) setStart(e);
  96. else {
  97. Element temp = start;
  98. for (int i = 0; i < size; i++) {
  99. if (e.getName().compareTo(temp.getName()) <= 0) { //temp irgendwo auf null
  100. if (size != 1) {
  101. if (i == 0) {
  102. temp.setPrev(e);
  103. e.setNext(temp);
  104. setStart(e);
  105. }
  106. else {
  107. temp.getPrev().setNext(e);
  108. e.setPrev(temp.getPrev());
  109. e.setNext(temp);
  110. temp.setPrev(e);
  111. }
  112. }
  113. else {
  114. e.setNext(temp);
  115. temp.setPrev(e);
  116. setStart(e);
  117. }
  118. break;
  119. }
  120. if (i == size - 1) {
  121. temp.setNext(e);
  122. e.setPrev(temp);
  123. break;
  124. }
  125. temp = temp.getNext();
  126. }
  127. }
  128. size++;
  129. }
  130.  
  131. public void removeFromPos(int pos) {
  132. if (size == 0 || pos >= size) {
  133. System.out.println("Geht nicht.");
  134. return;
  135. }
  136. Element temp = start;
  137. for (int i = 0; i < pos; i++) temp = temp.getNext();
  138.  
  139. if (pos == 0) { //Anfang
  140. if (size != 1) {
  141. start = temp.getNext();
  142. start.setPrev(null);
  143. }
  144. else setStart(null);
  145. }
  146. else if (pos == size - 1) temp.getPrev().setNext(null);
  147. else {
  148. temp.getPrev().setNext(temp.getNext());
  149. temp.getNext().setPrev(temp.getPrev());
  150. }
  151. temp.setNext(null);
  152. temp.setPrev(null);
  153. size--; //Ende
  154. }
  155.  
  156. public boolean removeElement(Element e) {
  157. if (size == 0) return false;
  158. Element temp = start;
  159. int pos = 0;
  160. for (int i = 0; i < size; i++) {
  161. if (temp.getName().equals(e.getName())) break;
  162. temp = temp.getNext();
  163. pos++;
  164. if (i == size - 1) return false;
  165. }
  166. //if (outputElementPos(temp) == 0) {
  167. if (pos == 0) { //Anfang
  168. if (size != 1) {
  169. start = temp.getNext();
  170. start.setPrev(null);
  171. }
  172. else setStart(null);
  173. }
  174. //else if (outputElementPos(temp) == size - 1) {
  175. else if (pos == size - 1) temp.getPrev().setNext(null);
  176. else {
  177. temp.getPrev().setNext(temp.getNext());
  178. temp.getNext().setPrev(temp.getPrev());
  179. }
  180. temp.setNext(null);
  181. temp.setPrev(null);
  182. size--; //Ende
  183. return true;
  184. }
  185.  
  186. public void removeLast() {
  187. // removeFromPos(size - 1);
  188. if (size == 0) {
  189. System.out.println("Die Liste ist bereits leer.");
  190. return;
  191. }
  192. if (size == 1) setStart(null);
  193. else {
  194. Element temp = start;
  195. /* for (int i = 1; i < size; i++) {
  196. temp = temp.getNext();
  197. } */
  198. while (temp.getNext().getNext() != null) {
  199. temp = temp.getNext();
  200. }
  201. temp.getNext().setPrev(null);
  202. temp.setNext(null); // Alternative
  203. // temp.getPrev().setNext(null);
  204. // temp.setPrev(null);
  205. }
  206. size--;
  207. }
  208.  
  209. public void emptyAll() {
  210. start = null;
  211. size = 0;
  212. }
  213.  
  214. public void sort() {
  215. Element[] alleElemente = new Element[getSize()];
  216. Element temp = start;
  217. for (int i = 0; i < alleElemente.length; i++) {
  218. alleElemente[i] = temp;
  219. temp = temp.getNext();
  220. }
  221. for (int i = 0; i < alleElemente.length; i++) {
  222. for (int j = i + 1; j < alleElemente.length; j++) {
  223. if (alleElemente[i].getName().compareTo(alleElemente[j].getName()) > 0) {
  224. Element tauschen = new Element(alleElemente[i].getName());
  225. alleElemente[i] = new Element(alleElemente[j].getName());
  226. alleElemente[j] = new Element(tauschen.getName());
  227. }
  228. }
  229. }
  230. if (getSize() != 0) setStart(alleElemente[0]);
  231. temp = start;
  232. for (int i = 1; i < alleElemente.length; i++) {
  233. temp.setNext(alleElemente[i]);
  234. alleElemente[i].setPrev(temp);
  235. temp = temp.getNext();
  236. }
  237. }
  238.  
  239. public void outputAll() {
  240. if (size == 0) {
  241. System.out.println("Die Liste ist leer.");
  242. return;
  243. }
  244. Element temp = start;
  245. for (int i = 0; i < size; i++) {
  246. System.out.println(temp.getName());
  247. temp = temp.getNext();
  248. }
  249. }
  250.  
  251. public void outputElementAtPos(int pos) {
  252. if (pos >= size) System.out.println("Die Position existiert nicht.");
  253. else {
  254. Element temp = start;
  255. for (int i = 0; i < pos; i++) temp = temp.getNext();
  256. System.out.println(temp.getName());
  257. }
  258. }
  259.  
  260. public int outputElementPos(Element e) {
  261. int pos = 0;
  262. Element temp = start;
  263. for (int i = 0; i < size; i++) {
  264. if (temp.getName().equals(e.getName())) break;
  265. temp = temp.getNext();
  266. pos++;
  267. if (i == size - 1) return -1;
  268. }
  269. return pos;
  270. }
  271.  
  272. @Override
  273. public String toString() {
  274. /* String a = "";
  275. Element temp = start;
  276. while (temp.getNext() != null) {
  277. a = a + temp.getName() + " ";
  278. }
  279. return a; */
  280. return "Das ist eine schöne Liste";
  281. }
  282. }
  283. //Ende Klasse Liste
  284.  
  285. public class Song {
  286. String titel;
  287. String interpret;
  288. Song next;
  289.  
  290. public Song(String titel) {
  291. this.titel = titel;
  292. }
  293.  
  294. public String getTitel() {
  295. return titel;
  296. }
  297. public void setTitel(String titel) {
  298. this.titel = titel;
  299. }
  300. public String getInterpret() {
  301. return interpret;
  302. }
  303. public void setInterpret(String interpret) {
  304. this.interpret = interpret;
  305. }
  306. public Song getNext() {
  307. return next;
  308. }
  309. public void setNext(Song next) {
  310. this.next = next;
  311. }
  312.  
  313. @Override
  314. public String toString() {
  315. String r = getTitel() + " " + getInterpret();
  316. return r;
  317. }
  318. }
  319. //Ende Klasse Song
  320.  
  321. public class SongListe {
  322. Song start;
  323. int size = 0;
  324.  
  325. public Song getStart() {
  326. return start;
  327. }
  328.  
  329. public void setStart(Song start) {
  330. this.start = start;
  331. }
  332.  
  333. public int getSize() {
  334. return size;
  335. }
  336.  
  337. public void setSize(int size) {
  338. this.size = size;
  339. }
  340.  
  341. public void add(Song s) {
  342. if (size == 0) {
  343. setStart(s);
  344. size++;
  345. }
  346. else {
  347. Song temp = start;
  348. //Zusatz damit der selbe Song nicht zweimal drin stehen kann
  349.  
  350. //Zusatz Ende
  351. temp = start;
  352. while (temp.getNext() != null) {
  353. temp = temp.getNext();
  354. }
  355. temp.setNext(s);
  356. s.setNext(null);
  357. if (size == 50) {
  358. temp = start;
  359. temp = temp.getNext();
  360. start.setNext(null);
  361. setStart(temp);
  362. }
  363. else size++;
  364. }
  365. }
  366.  
  367. public void shuffle(Song[] s) {
  368. int r = (int) (Math.random() * s.length);
  369. Song toAdd = s[r];
  370. boolean vorhanden = false;
  371. while (true) {
  372. Song temp = start;
  373. for (int i = 0; i < size; i++) {
  374. if (temp.equals(toAdd)) {
  375. r = (int) (Math.random() * s.length);
  376. toAdd = s[r];
  377. vorhanden = true;
  378. break;
  379. }
  380. else {
  381. temp = temp.getNext();
  382. vorhanden = false;
  383. }
  384. }
  385. if (!vorhanden) {
  386. add(toAdd);
  387. break;
  388. }
  389. else {
  390. //Fehlermeldung
  391. break;
  392. }
  393. }
  394. }
  395.  
  396. public void output() {
  397. if (size == 0) {
  398. System.out.println("Die Liste ist leer.");
  399. return;
  400. }
  401. Song temp = start;
  402. while(temp.getNext() != null) {
  403. System.out.println(temp.getTitel());
  404. temp = temp.getNext();
  405. }
  406. System.out.println(temp.getTitel());
  407. }
  408.  
  409. public void ausgabe() {
  410. if (size == 0) {
  411. System.out.println("Die Liste ist leer.");
  412. return;
  413. }
  414.  
  415. Song temp = start;
  416. Song temp2 = start;
  417. while (temp.getNext() != null) temp = temp.getNext();
  418. for (int i = 0; i < size; i++) {
  419. if (i % 2 == 0) {
  420. temp2 = start;
  421. while(temp2.getNext() != temp && temp2 != temp) temp2 = temp2.getNext();
  422. System.out.println(temp.getTitel());
  423.  
  424. }
  425. else {
  426. temp = start;
  427. while(temp.getNext() != temp2 && temp != temp2) temp = temp.getNext();
  428. System.out.println(temp2.getTitel());
  429. }
  430. }
  431. }
  432.  
  433. public void ausgabeAlternative() {
  434. Song temp = start;
  435. while (temp.getNext() != null) temp = temp.getNext();
  436. ausgabeAlternative(temp);
  437. }
  438. public void ausgabeAlternative(Song s) {
  439. System.out.println(s.getTitel());
  440. Song temp = start;
  441. if (temp.equals(s)) return;
  442. while (!temp.getNext().equals(s)) temp = temp.getNext();
  443. ausgabeAlternative(temp);
  444. }
  445. }
  446. //Ende Klasse SongListe
  447.  
  448.  
  449. public class SongMain {
  450. public static void main(String[] args) {
  451. Song a = new Song("Thriller");
  452. a.setInterpret("Michael Jackson");
  453. Song b = new Song("Beat It");
  454. Song c = new Song("ABC");
  455. Song d = new Song("Back in Black");
  456. Song e = new Song("Bohemian Rhapsody");
  457. Song[] songs = {new Song("Adventure of a Lifetime"), a, b, c, d, e};
  458. SongListe angehoert = new SongListe();
  459. angehoert.add(a);
  460. angehoert.add(b);
  461. angehoert.add(c);
  462. angehoert.add(d);
  463. angehoert.add(e);
  464. angehoert.shuffle(songs);
  465. //angehoert.ausgabeAlternative();
  466.  
  467. System.out.println(a.getTitel() + " " + a.getInterpret());
  468. System.out.println(b.getTitel() + " " + b.getInterpret());
  469. System.out.println(c.getTitel() + " " + c.getInterpret());
  470. System.out.println(a); //= System.out.println(a.toString());
  471. System.out.println(c);
  472. System.out.println(d);
  473. }
  474. }
  475. //Ende Klasse Main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement