Ok ragazzi, quindi sto cercando di imparare come stampare una lista collegata. Ho tutti i metodi che avrei bisogno di usare per la lista, ma non riesco a capire come visualizzare i valori dei nodi. Al momento non c'è nulla nel mio metodo principale perché continuavo a ricevere errori nel tentativo di chiamare i metodi non statici nel main. Ho un metodo toString che mostra il contenuto della lista. Come andrei a chiamare questo toString per visualizzare il valore di ogni nodo? Qualsiasi consiglio sarà molto apprezzato.Stampa di un elenco collegato tramite toString
Qui è la classe del nodo:
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;
}
}
Ecco la classe LinkedList che contiene il principale e metodi per manipolare la lista:
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;
}
}
Si crea un'istanza della classe e chiamare 'toString() 'su di esso. –
Chiama il metodo 'toString()'. Non vedo alcun problema in questo. – Prateek
Come intendete. Se chiamo "toString()" nel mio metodo principale, viene visualizzato un errore che dice "Impossibile creare un riferimento statico al metodo non statico toString()? – Shawn