Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Klassen Element und Liste, Song, SongListe und Main
- public class Element {
- private Element next;
- private Element prev;
- private String name;
- public Element(String name) {
- this.name = name;
- }
- public Element getNext() {
- return next;
- }
- public void setNext(Element next) {
- this.next = next;
- }
- public Element getPrev() {
- return prev;
- }
- public void setPrev(Element prev) {
- this.prev = prev;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public boolean hasNext() {
- if (next == null) return false;
- return true;
- }
- @Override
- public String toString() {
- return name;
- }
- }
- //Ende Klasse Elementpublic class Liste {
- private Element start;
- private int size = 0;
- public Element getStart() {
- return start;
- }
- public void setStart(Element start) {
- this.start = start;
- }
- public int getSize() {
- return size;
- }
- public void setSize(int size) {
- this.size = size;
- }
- public boolean addToPos(Element e, int pos) {
- if (pos > size) return false;
- if (size == 0) setStart(e);
- else {
- Element temp = start;
- for (int i = 1; i < pos; i++)temp = temp.getNext();
- e.setNext(temp.getNext());
- if (e.getNext() != null) e.getNext().setPrev(e);
- e.setPrev(temp);
- temp.setNext(e);
- }
- size++;
- return true;
- }
- public void addToEnd(Element e) {
- //addToPos(e, getSize());
- if (size == 0) setStart(e);
- else {
- Element temp = start;
- while (temp.hasNext()) {
- temp = temp.getNext();
- }
- temp.setNext(e);
- e.setPrev(temp);
- }
- size++;
- }
- public void addSorted(Element e) {
- if (size == 0) setStart(e);
- else {
- Element temp = start;
- for (int i = 0; i < size; i++) {
- if (e.getName().compareTo(temp.getName()) <= 0) { //temp irgendwo auf null
- if (size != 1) {
- if (i == 0) {
- temp.setPrev(e);
- e.setNext(temp);
- setStart(e);
- }
- else {
- temp.getPrev().setNext(e);
- e.setPrev(temp.getPrev());
- e.setNext(temp);
- temp.setPrev(e);
- }
- }
- else {
- e.setNext(temp);
- temp.setPrev(e);
- setStart(e);
- }
- break;
- }
- if (i == size - 1) {
- temp.setNext(e);
- e.setPrev(temp);
- break;
- }
- temp = temp.getNext();
- }
- }
- size++;
- }
- public void removeFromPos(int pos) {
- if (size == 0 || pos >= size) {
- System.out.println("Geht nicht.");
- return;
- }
- Element temp = start;
- for (int i = 0; i < pos; i++) temp = temp.getNext();
- if (pos == 0) { //Anfang
- if (size != 1) {
- start = temp.getNext();
- start.setPrev(null);
- }
- else setStart(null);
- }
- else if (pos == size - 1) temp.getPrev().setNext(null);
- else {
- temp.getPrev().setNext(temp.getNext());
- temp.getNext().setPrev(temp.getPrev());
- }
- temp.setNext(null);
- temp.setPrev(null);
- size--; //Ende
- }
- public boolean removeElement(Element e) {
- if (size == 0) return false;
- Element temp = start;
- int pos = 0;
- for (int i = 0; i < size; i++) {
- if (temp.getName().equals(e.getName())) break;
- temp = temp.getNext();
- pos++;
- if (i == size - 1) return false;
- }
- //if (outputElementPos(temp) == 0) {
- if (pos == 0) { //Anfang
- if (size != 1) {
- start = temp.getNext();
- start.setPrev(null);
- }
- else setStart(null);
- }
- //else if (outputElementPos(temp) == size - 1) {
- else if (pos == size - 1) temp.getPrev().setNext(null);
- else {
- temp.getPrev().setNext(temp.getNext());
- temp.getNext().setPrev(temp.getPrev());
- }
- temp.setNext(null);
- temp.setPrev(null);
- size--; //Ende
- return true;
- }
- public void removeLast() {
- // removeFromPos(size - 1);
- if (size == 0) {
- System.out.println("Die Liste ist bereits leer.");
- return;
- }
- if (size == 1) setStart(null);
- else {
- Element temp = start;
- /* for (int i = 1; i < size; i++) {
- temp = temp.getNext();
- } */
- while (temp.getNext().getNext() != null) {
- temp = temp.getNext();
- }
- temp.getNext().setPrev(null);
- temp.setNext(null); // Alternative
- // temp.getPrev().setNext(null);
- // temp.setPrev(null);
- }
- size--;
- }
- public void emptyAll() {
- start = null;
- size = 0;
- }
- public void sort() {
- Element[] alleElemente = new Element[getSize()];
- Element temp = start;
- for (int i = 0; i < alleElemente.length; i++) {
- alleElemente[i] = temp;
- temp = temp.getNext();
- }
- for (int i = 0; i < alleElemente.length; i++) {
- for (int j = i + 1; j < alleElemente.length; j++) {
- if (alleElemente[i].getName().compareTo(alleElemente[j].getName()) > 0) {
- Element tauschen = new Element(alleElemente[i].getName());
- alleElemente[i] = new Element(alleElemente[j].getName());
- alleElemente[j] = new Element(tauschen.getName());
- }
- }
- }
- if (getSize() != 0) setStart(alleElemente[0]);
- temp = start;
- for (int i = 1; i < alleElemente.length; i++) {
- temp.setNext(alleElemente[i]);
- alleElemente[i].setPrev(temp);
- temp = temp.getNext();
- }
- }
- public void outputAll() {
- if (size == 0) {
- System.out.println("Die Liste ist leer.");
- return;
- }
- Element temp = start;
- for (int i = 0; i < size; i++) {
- System.out.println(temp.getName());
- temp = temp.getNext();
- }
- }
- public void outputElementAtPos(int pos) {
- if (pos >= size) System.out.println("Die Position existiert nicht.");
- else {
- Element temp = start;
- for (int i = 0; i < pos; i++) temp = temp.getNext();
- System.out.println(temp.getName());
- }
- }
- public int outputElementPos(Element e) {
- int pos = 0;
- Element temp = start;
- for (int i = 0; i < size; i++) {
- if (temp.getName().equals(e.getName())) break;
- temp = temp.getNext();
- pos++;
- if (i == size - 1) return -1;
- }
- return pos;
- }
- @Override
- public String toString() {
- /* String a = "";
- Element temp = start;
- while (temp.getNext() != null) {
- a = a + temp.getName() + " ";
- }
- return a; */
- return "Das ist eine schöne Liste";
- }
- }
- //Ende Klasse Liste
- public class Song {
- String titel;
- String interpret;
- Song next;
- public Song(String titel) {
- this.titel = titel;
- }
- public String getTitel() {
- return titel;
- }
- public void setTitel(String titel) {
- this.titel = titel;
- }
- public String getInterpret() {
- return interpret;
- }
- public void setInterpret(String interpret) {
- this.interpret = interpret;
- }
- public Song getNext() {
- return next;
- }
- public void setNext(Song next) {
- this.next = next;
- }
- @Override
- public String toString() {
- String r = getTitel() + " " + getInterpret();
- return r;
- }
- }
- //Ende Klasse Song
- public class SongListe {
- Song start;
- int size = 0;
- public Song getStart() {
- return start;
- }
- public void setStart(Song start) {
- this.start = start;
- }
- public int getSize() {
- return size;
- }
- public void setSize(int size) {
- this.size = size;
- }
- public void add(Song s) {
- if (size == 0) {
- setStart(s);
- size++;
- }
- else {
- Song temp = start;
- //Zusatz damit der selbe Song nicht zweimal drin stehen kann
- //Zusatz Ende
- temp = start;
- while (temp.getNext() != null) {
- temp = temp.getNext();
- }
- temp.setNext(s);
- s.setNext(null);
- if (size == 50) {
- temp = start;
- temp = temp.getNext();
- start.setNext(null);
- setStart(temp);
- }
- else size++;
- }
- }
- public void shuffle(Song[] s) {
- int r = (int) (Math.random() * s.length);
- Song toAdd = s[r];
- boolean vorhanden = false;
- while (true) {
- Song temp = start;
- for (int i = 0; i < size; i++) {
- if (temp.equals(toAdd)) {
- r = (int) (Math.random() * s.length);
- toAdd = s[r];
- vorhanden = true;
- break;
- }
- else {
- temp = temp.getNext();
- vorhanden = false;
- }
- }
- if (!vorhanden) {
- add(toAdd);
- break;
- }
- else {
- //Fehlermeldung
- break;
- }
- }
- }
- public void output() {
- if (size == 0) {
- System.out.println("Die Liste ist leer.");
- return;
- }
- Song temp = start;
- while(temp.getNext() != null) {
- System.out.println(temp.getTitel());
- temp = temp.getNext();
- }
- System.out.println(temp.getTitel());
- }
- public void ausgabe() {
- if (size == 0) {
- System.out.println("Die Liste ist leer.");
- return;
- }
- Song temp = start;
- Song temp2 = start;
- while (temp.getNext() != null) temp = temp.getNext();
- for (int i = 0; i < size; i++) {
- if (i % 2 == 0) {
- temp2 = start;
- while(temp2.getNext() != temp && temp2 != temp) temp2 = temp2.getNext();
- System.out.println(temp.getTitel());
- }
- else {
- temp = start;
- while(temp.getNext() != temp2 && temp != temp2) temp = temp.getNext();
- System.out.println(temp2.getTitel());
- }
- }
- }
- public void ausgabeAlternative() {
- Song temp = start;
- while (temp.getNext() != null) temp = temp.getNext();
- ausgabeAlternative(temp);
- }
- public void ausgabeAlternative(Song s) {
- System.out.println(s.getTitel());
- Song temp = start;
- if (temp.equals(s)) return;
- while (!temp.getNext().equals(s)) temp = temp.getNext();
- ausgabeAlternative(temp);
- }
- }
- //Ende Klasse SongListe
- public class SongMain {
- public static void main(String[] args) {
- Song a = new Song("Thriller");
- a.setInterpret("Michael Jackson");
- Song b = new Song("Beat It");
- Song c = new Song("ABC");
- Song d = new Song("Back in Black");
- Song e = new Song("Bohemian Rhapsody");
- Song[] songs = {new Song("Adventure of a Lifetime"), a, b, c, d, e};
- SongListe angehoert = new SongListe();
- angehoert.add(a);
- angehoert.add(b);
- angehoert.add(c);
- angehoert.add(d);
- angehoert.add(e);
- angehoert.shuffle(songs);
- //angehoert.ausgabeAlternative();
- System.out.println(a.getTitel() + " " + a.getInterpret());
- System.out.println(b.getTitel() + " " + b.getInterpret());
- System.out.println(c.getTitel() + " " + c.getInterpret());
- System.out.println(a); //= System.out.println(a.toString());
- System.out.println(c);
- System.out.println(d);
- }
- }
- //Ende Klasse Main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement