單鏈表反轉,返回反轉後連結串列頭結點--360測試實習生面試題
阿新 • • 發佈:2018-12-21
為了正確反轉一個連結串列,需調整指標指向,例如i,m,n是3個相鄰結點,假設結點i之前的指標已調整完畢,,這些結點的next指標都指向前面一個結點,遍歷到結點m時,需要調整結點的next指標,避免連結串列斷開,在調整之前需儲存n,然後找反轉後連結串列的頭結點(即原連結串列的尾結點,next為空指標的結點)
class Node{ int data; Node next; public Node(int data){ this.data=data; } } public class ListReverse { public static void main(String[] args){ Node n1=new Node(5); Node n2=new Node(3); Node n3=new Node(9); Node n4=new Node(2); n1.next=n2; n2.next=n3; n3.next=n4; Node n=new ListReverse().reverse(n1); System.out.println(n.data); } public Node reverse(Node head){ Node preNode=null; Node curNode=head; while(curNode!=null){ Node nextNode=curNode.next; if(nextNode==null) { return curNode; } curNode.next=preNode; preNode=curNode; curNode=nextNode; } return preNode; } }