Fehlerhafte Ausgabe

malämi

Mitglied
Hallo,
bin neu hier und ich hoffe mal ich habe nicht die falsche kategorie gewählt 🙂 bitte nicht sauer sein...
ich habe eine insert methode geschrieben...diese erscheint mir richtig aber ich habe ein problem bei der ausgabe. Es gibt mir anstatt 0123 aus leider 3210 aus. so wie ich es eingegeben habe...hier sind folgende klassen ich hoffe ihr könnt mir weiterhelfen komme nicht weiter ich wäre euch sehr dankbar.

Java:
 [JAVA=42]  package Methoden;

public class Node {
	  
	  protected Element item;

	  protected LinkedList next;

	  public Node(Element item) {
	    this.item = item;
	    this.next = new LinkedList();
	  }

	  public String toString() {
	    return item.toString() + (next == null ? "" : " " + next);
	  }

	}


Java:
  [JAVA=42]  package Methoden;

public class LinkedList implements List {
	
	  protected Node node;

	  public LinkedList() {
	    this.node = null;
	  }

	public boolean isEmpty(){
		return node==null;
	}
	  

	  public LinkedList insert(Element x) {
	    Node n = new Node(x);
	    if (! isEmpty())
	      n.next= node.next;
	    node = n;
	    return this;
	  }

	
	/*public List insert(Element x, int n){
		 int m=1;
	 if(!isEmpty()){
		while (m!=n){
			m++;
			node=node.next.node;// weitergehen in der liste
		}
	 		node.next.insert(x);				
	}
		return this;
	}*/
	
	
	/*public  List swap(int m, int n){
		int t=1;
		int wert;
		
		if(!isEmpty()){
			
			LinkedList s= node.next;//Verweis 
			Node z= node;
			if (m<n){
			 while(t<m){
				z=z.next.node;
				s=s.node.next;
				t++;
			 }
			 if(t==m){
					
			 	 }			
				}
			}
		}*/
	
public String toString() {
    return isEmpty() ? "" : "" + node;
  }

}
Java:
 [JAVA=42] package Methoden;

public class Test {
	
	 static void print(LinkedList l) {
	System.out.print(l);
	}
	

	public static void main (String[] args){
		
	LinkedList l = new LinkedList();
	
	//System.out.println();
	//System.out.println( "Liste leer: " +l.isEmpty());
	 
	System.out.println();
	print(l);
	l.insert(new Element(3)); print(l);
	l.insert(new Element(2));print(l);
	l.insert(new Element(1));print(l);
	l.insert(new Element(0));print(l);
	 //System.out.println(l);
	 System.out.println(); 
	}

	

}

es geht um die methode LinkedList insert(Element x) die ich ausgeben will...ich wäre euch sehr dankbar, wenn ihr mir helfen könntet. ich wünsche euch noch einen sonnigen tag🙂
 
Was für ´ne Methode ist denn print(...)?
Zweite Frage: Du erstellst eine eigene Implementierung des
Code:
List
-Interfaces mit dem bereits existierenden Namen
Code:
LinkedList
. Was spricht gegen die "normale"
Code:
LinkedList
?
 
Die klassen die ich aufgeführt habe sind schon vorgegeben..die aufgabe lautet die methoden die in list sind in linkedlist zu entwerfen...und die methode print() habe ich von unserem dozenten übernommen ich dachte ich würde sie benötigen, wenn ich die methoden ausgeben möchte...dem scheint aber leider nicht so...

Java:
 [JAVA=42] package Methoden;



interface List {

	  boolean isEmpty();
	//  boolean isInList(Element x);
	  //Element firstElement();
	  //Element lastElement();
	  //int length();

	  List insert(Element x);
	  //List append(Element x);
	  //List delete(Element x);
	  //List delete();

//	  List insert(Element x, int n);
	//  List swap(int m, int n);
	  //List deleteAll(Element x);
	  //List deleteLast(Element x);
	  //List deleteLast();

	  //Element maximum();
	  //Element minimum();

	}

das is die klasse list
 
ich wollte nur noch anmerken, dass das wirklich keine hausaufgaben sind...das waren mal welche aber ich bereite mich momentan für eine prüfung vor....für eure hilfe wäre ich euch sehr dankbar

viele grüße
 
die Ausgabe ist 3, 2, 1, 0 weil bei jedem print immer nur der aktuelle Eintrag ausgegeben wird
und die Elemente eben in dieser Reihenfolge eingefügt werden,

eine Ausgabe mehrere Elemente einer Liste zusammen erfolgt nie, die intere Struktur ist auch kaputt

es gibt die Haupt-LinkedList und 4 Nodes werden erzeugt, die jeder auf eine leere weitere LinkedList zeigen,
die späteren Nodes übernehmen die LinkedList der vorherigen Nodes ([c]if (!isEmpty()) n.next = node.next;[/c]),
aber das macht erstens keinen Unterschied, da alle Nodes-LinkedLists leer sind und bleiben,
und zweitens gehen die alten Nodes mit ihren Elementen ansonsten verloren

[c]n.next.insert(node.item);[/c] würde ein wenig schaffen, das vorherige Element als Node in die Anhang-Liste einfügen,
aber damit würde das vorherige Node-Objekt verloren gehen und etwa dessen Liste weiterer Nodes

es muss also der alte Node gerettet werden, etwa [c]n.next.insert(node);[/c] mit einer insert-Methode die auch Nodes erhält,

---

da jede LinkedList im Moment nur einen Node enthalten kann und der Node dann eine LinkedList, erscheinen zwei Klassen unsinnig,
verweise von einem (List-)Node direkt auf den nächsten, das ist die normale Verkettung

-----
erweitere auch die print-Ausgabe um Zeilenumbruch, Anfang Ende usw.,
damit man mehrere Ausgaben direkt hintereinander von der Ausgabe einer längeren Liste unterscheiden kann
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben