Ich versuche, den letzten Knoten in LinkedList zu löschen. Für den Eingang: 1, 2, 3 Ausgang sollte sein: 1, 2Implementieren einer Methode zum Löschen des letzten Knotens einer verknüpften Liste
Ich bin in der Lage, den Knoten zu löschen, aber gibt es einen besseren/effizienteren Weg?
Bitte überprüfen Sie die removeLastNode()
Methode.
public class MyLinkedList {
Node head;
Node tail;
public void add(int number){
Node node=new Node();
node.setNumber(number);
if(head==null){
head=node;
tail=node;
}
else{
tail.next=node;
tail=node;
}
}
public void removeLastNode(){
Node temp=head;
Node head1=null;
Node tail1=null;
while(temp.next!=null){
Node node=new Node();
node.number=temp.number;
if(head1==null){
head1=node;
tail1=node;
}
else{
tail1.next=node;
tail1=node;
}
if(temp.next.next==null){
temp.next=null;
break;
}
temp=temp.next;
}
head=head1;
}
@Override
public String toString(){
while(head!=null){
System.out.print(head.getNumber()+" ");
head=head.getNext();
}
return "";
}
public static void main(String ar[]){
MyLinkedList list=new MyLinkedList();
list.add(1);
list.add(2);
list.add(3);
list.removeLastNode();
System.out.println(list);
}
public class Node{
Node next;
int number;
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
}
Sie können eine doppelt verkettete Liste verwenden, wobei jeder Knoten die Adresse zu dem vorherigen und dem nächsten Knoten gespeichert – Slimu
Beachten Sie, dass 'Java's Klasse' LinkedList' eine 'doppelt verknüpfte list' implementiert durch ** Standard * *, es handelt sich nicht um eine normale 'Linked List'! Sie können also bereits mit 'LinkedList' von Java arbeiten. Oder, wenn Sie es selbst implementieren müssen, können Sie dort nachschlagen, wie es gemacht wird. – Zabuza