1. 程式人生 > 其它 >牛客刷題——連結串列反轉

牛客刷題——連結串列反轉

技術標籤:牛客刷題

挺簡單的一道題,當初筆試還寫過,簡單記錄一下~

連結串列反轉1->2->3->4->null;反轉後變為4->3->2->1;即null<-1<-2<-3<-4;

因此考慮反轉步驟為 1) null<-1,2->3->4 2) null<-1<-2,3->4 3) null<-1-<2-<3,4 4)null<-1<-2<-3<-4

所以只需要採用while迴圈依次進行處理即可。

在進行處理的時候,首先確定當前結點now,拿到當前結點的next節點(now和next均不為空)拿到next的next節點nNext(防止連結串列丟失),然後重新調整now和next之間的關係,調整完之後,now和next後移。

完整程式碼如下:

 public static ListNode ReverseList(ListNode head) {
		 if(head==null||head.next==null) {  //特殊情況處理  空連結串列或者單個節點直接返回
	        	return head;
	        }
	      
        	ListNode nowN = head;  //從首元素出發
        	ListNode nextN = nowN.next; //下一個元素
        	nowN.next = null;
	        while(nextN!=null){  
	        	System.out.print(head.val+"  "+nextN.val);
	        	ListNode nNext = nextN.next;
	        	//進行反轉
	        	nextN.next=head;
	        	head = nextN;
	        	nextN = nNext;
	            
	        }
	        return head;
	    }