我有一个双向链表,我必须反复反转。
import java.util.*;
public class DLL {
public static Node reverse (Node head){
if(head == null)
return null;
else{
Node temp=head;
Node buffer=null;
while(temp.next != null){
buffer=temp.next;
temp.next=temp.prev;
temp.prev=buffer;
temp=buffer;
}
head=temp.prev;
return head;
}
}
public static Node insert(Node head,int data){
if(head == null)
return new Node(data);
else{
Node temp=head;
while(temp.next != null){
temp=temp.next;
}
Node cur = new Node(data);
temp.next=cur;
cur.prev=temp;
return head;
}
}
public static void Display(Node head){
if(head != null){
System.out.println(head.data);
Display(head.next);
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Node head= null;
int size = s.nextInt();
while(size-- != 0){
head=insert(head,s.nextInt());
}
Display(head);
head=reverse(head);
System
Display(head);
}
}
现在我得到一个反向列表,但我不能打印第一个元素,即原始列表的最后一个元素 我的DLL节点类就像这样
class Node {
int data;
Node next;
Node prev;
}
我在这里做错了什么?