java實現單鏈表倒轉的方法
java中有關單鏈表反轉的方法有很多種,這里記錄一種并附上詳細步驟:
代碼如下
/**
?* Definition for singly-linked list.
?* public class ListNode {
?* ? ? int val;
?* ? ? ListNode next;
?* ? ? ListNode(int x) { val = x; }
?* }
?*/
public class Solution {
? ? public ListNode reverseList(ListNode head) {?
? ? ? ? ListNode pre;
? ? ? ? ListNode temp;
? ? ? ? pre = head; // 前驅節(jié)點
? ? ? ? ListNode cur = head.next //當前節(jié)點
? ? ? ? while(cur != null && cur.next != null){
? ? ? ? ? ? temp = cur.next; ? ?//(1)
? ? ? ? ? ? cur.next = pre; ? ? ? ?//(2)
? ? ? ? ? ? pre = cur; ? ? //(3)
? ? ? ? ? ? cur = temp; ? ? ? ? ?//(4)
? ? ? ? }
? ? ? ? head.next = null //原頭節(jié)點,反轉后尾節(jié)點
? ? ? ? return pre; ? //原尾節(jié)點 ?反轉后頭節(jié)點
? ? }
}主要的操作是在while循環(huán)中,下面畫圖解釋一下是如何實現單鏈表倒轉的:
首先java中沒有指針的概念,但是可以看到ListNode中的next屬性其實就代表指向下一個節(jié)點的“指針”,因此可以這樣來理解:
1、原單鏈表:
假設單鏈表有三個元素[1,2,3],0為上述的頭對象

2、執(zhí)行(1)、(2)后:
cur.next指向了n.next:

3、執(zhí)行(3):

4、執(zhí)行(4):

第一次循環(huán)結束,第一次循環(huán)后的單鏈表如上圖所示。
cur != null && cur.next != null,因此執(zhí)行第二次循環(huán):
5、第二次執(zhí)行(1),(2):

6、第二次執(zhí)行(3):

7、第二次執(zhí)行(4):

cur.next == null 推出循環(huán)
以上,實現單鏈表的倒轉。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
idea ssm項目java程序使用十六進制rxtx包向串口發(fā)送指令的方法
這篇文章主要介紹了idea ssm項目java程序向串口發(fā)送指令并且使用十六進制 rxtx包,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
使用注解@Recover優(yōu)化丑陋的循環(huán)詳解
我們知道在實現一個功能的時候是可以使用不同的代碼來實現的,那么相應的不同實現方法的性能肯定也是有差別的,下面這篇文章主要給大家介紹了關于使用注解@Recover優(yōu)化丑陋的循環(huán)的相關資料,需要的朋友可以參考下2022-04-04
JAVA基本類型包裝類 BigDecimal BigInteger 的使用
Java 中預定義了八種基本數據類型,包括:byte,int,long,double,float,boolean,char,short,接下來文章小編將向大家介紹其中幾個類型的內容,需要的朋友可以參考下文章2021-09-09

