Ok Leute, also versuche ich zu lernen, wie man eine verknüpfte Liste ausdruckt. Ich habe alle Methoden, die ich für die Liste verwenden müsste, aber ich kann nicht herausfinden, wie die Werte der Knoten angezeigt werden. Im Moment gibt es nichts in meiner Hauptmethode, weil ich immer Fehler bekommen habe, die versuchen, nicht-statische Methoden in der Hauptsache aufzurufen. Ich habe eine toString-Methode, die den Inhalt der Liste anzeigt. Wie würde ich diesen String toString aufrufen, um den Wert jedes Knotens anzuzeigen? Jeder Rat wird sehr geschätzt. HierAusdrucken einer verketteten Liste mit toString
ist die Knotenklasse:
public class LinkedListNode
{
private int data;
private LinkedListNode next;
public LinkedListNode(int data)
{
this.data = data;
this.next = null;
}
public int getData()
{
return data;
}
public void setData(int d)
{
data = d;
}
public LinkedListNode getNext()
{
return next;
}
public void setNext(LinkedListNode n)
{
next = n;
}
}
Hier ist die LinkedList Klasse, die die Haupt- und Methoden enthält die Liste zu bearbeiten:
public class LinkedList {
public LinkedListNode head;
public static void main(String[] args) {
LinkedList l = new LinkedList();
l.insertFront(0);
System.out.println(l.toString());
}
public LinkedList() {
this.head = null;
}
public int removeFront(){
if(head == null){
System.out.println("Error - Attempting to call removeFront() on empty list");
return 0;
}else{
int temp = head.getData();
head = head.getNext();
return temp;
}
}
public void insertFront(int data){
if(head == null){
head = new LinkedListNode(data);
}else{
LinkedListNode newNode = new LinkedListNode(data);
newNode.setNext(head);
head = newNode;
}
}
public void insertBack(int data){
if(head == null){
head = new LinkedListNode(data);
}else{
LinkedListNode newNode = new LinkedListNode(data);
LinkedListNode current = head;
while(current.getNext() != null){
current = current.getNext();
}
current.setNext(newNode);
}
}
public int removeBack(){
if(head == null){
System.out.println("Error - Attempting to call removeBack() on empty list");
return 0;
}else if (head.getNext() == null){
int temp = head.getData();
head = null;
return temp;
}else{
LinkedListNode current = head;
while(current.getNext().getNext() != null){
current = current.getNext();
}
int temp = current.getNext().getData();
current.setNext(null);
return temp;
}
}
public String toString(){
String retStr = "Contents:\n";
LinkedListNode current = head;
while(current != null){
retStr += current.getData() + "\n";
current = current.getNext();
}
return retStr;
}
public LinkedListNode getHead() {
return head;
}
public void setHead(LinkedListNode head) {
this.head = head;
}
}
Sie eine Instanz der Klasse erstellen und rufen 'toString() 'darauf. –
Rufen Sie die 'toString()' Methode auf. Ich sehe darin kein Problem. – Prateek
Wie meinst du das? Wenn ich "toString()" in meiner Hauptmethode aufruft, erhalte ich einen Fehler, der besagt "Kann nicht einen statischen Verweis auf die nicht-statische Methode toString()? – Shawn