Beim Umkehren der Liste verwende ich den folgenden Code, aber es fügt das letzte Element zweimal hinzu.Umkehren einer verketteten Liste
public void reverse()
{
Node current,previous,next;
current=head;
previous=null;
while(current!=null)
{
next=current.getNext();
current.setNext(previous);
previous=current;
current=next;
}
head=previous;
}
Die Knotenklasse folgt
public class Node
{
private Node next;
private String data;
public Node(String dataValue) {
next = null;
data = dataValue;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
ich die Daten von
folgendepublic void add(String data)
{
if(head==null)
{
head=new Node(data);
}
Node temp=new Node(data);
Node current=head;
if(current!=null)
{
while(current.getNext()!=null)
{
current=current.getNext();
}
current.setNext(temp);
}
}
Nach der Umkehrung der Liste in der Liste am Addieren der Ausgabe I folgt
bin immerUrsprüngliche Liste: [1] [2] [3] [4] [5] Umgekehrte Liste: [4] [3] [2] [1] [1 ]
Beispiele wie diese sind am besten verstanden, wenn man ein wenig machen Zeichnen und Verschieben von Zeigern, wenn Zuordnungen im Programm vorgenommen werden. Sie werden bald erkennen, wo es schief geht. – Henry
Gibt es einen Grund, 'java.util.List' nicht zu verwenden? – Julisch
Fügen Sie einfach die return-Anweisung zu Ihrer add-Methode hinzu, wenn der head-Knoten null ist. –