java實(shí)現(xiàn)單鏈表倒轉(zhuǎn)的方法
java中有關(guān)單鏈表反轉(zhuǎn)的方法有很多種,這里記錄一種并附上詳細(xì)步驟:
代碼如下
/**
?* 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; // 前驅(qū)節(jié)點(diǎn)
? ? ? ? ListNode cur = head.next //當(dāng)前節(jié)點(diǎn)
? ? ? ? while(cur != null && cur.next != null){
? ? ? ? ? ? temp = cur.next; ? ?//(1)
? ? ? ? ? ? cur.next = pre; ? ? ? ?//(2)
? ? ? ? ? ? pre = cur; ? ? //(3)
? ? ? ? ? ? cur = temp; ? ? ? ? ?//(4)
? ? ? ? }
? ? ? ? head.next = null //原頭節(jié)點(diǎn),反轉(zhuǎn)后尾節(jié)點(diǎn)
? ? ? ? return pre; ? //原尾節(jié)點(diǎn) ?反轉(zhuǎn)后頭節(jié)點(diǎn)
? ? }
}主要的操作是在while循環(huán)中,下面畫圖解釋一下是如何實(shí)現(xiàn)單鏈表倒轉(zhuǎn)的:
首先java中沒有指針的概念,但是可以看到ListNode中的next屬性其實(shí)就代表指向下一個(gè)節(jié)點(diǎn)的“指針”,因此可以這樣來理解:
1、原單鏈表:
假設(shè)單鏈表有三個(gè)元素[1,2,3],0為上述的頭對(duì)象

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

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

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

第一次循環(huán)結(jié)束,第一次循環(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)
以上,實(shí)現(xiàn)單鏈表的倒轉(zhuǎn)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截的教程
我們寫的任何一個(gè)項(xiàng)目,都應(yīng)該有安全防護(hù),不應(yīng)該讓這個(gè)項(xiàng)目進(jìn)行“裸奔”,否則很容易被別人進(jìn)行攻擊。而在SpringBoot環(huán)境中,其實(shí)可以很容易實(shí)現(xiàn)安全保護(hù),本文給大家介紹SpringBoot如何整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截,需要的朋友可以參考下2023-05-05
springboot使用GuavaCache做簡(jiǎn)單緩存處理的方法
這篇文章主要介紹了springboot使用GuavaCache做簡(jiǎn)單緩存處理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
SpringBoot結(jié)合ElasticSearch實(shí)現(xiàn)模糊查詢的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot結(jié)合ElasticSearch實(shí)現(xiàn)模糊查詢的項(xiàng)目實(shí)踐,主要實(shí)現(xiàn)模糊查詢、批量CRUD、排序、分頁和高亮功能,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
使用session實(shí)現(xiàn)簡(jiǎn)易購(gòu)物車功能
這篇文章主要為大家詳細(xì)介紹了使用session實(shí)現(xiàn)簡(jiǎn)易購(gòu)物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
MPAndroidChart開源圖表庫(kù)的使用介紹之餅狀圖、折線圖和柱狀圖
這篇文章主要介紹了MPAndroidChart開源圖表庫(kù)的使用介紹之餅狀圖、折線圖和柱狀圖的相關(guān)資料,需要的朋友可以參考下2016-02-02
Spring中的@Value和@PropertySource注解詳解
這篇文章主要介紹了Spring中的@Value和@PropertySource注解詳解,@PropertySource:讀取外部配置文件中的key-value保存到運(yùn)行的環(huán)境變量中,本文提供了部分實(shí)現(xiàn)代碼,需要的朋友可以參考下2023-11-11
SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制
這篇文章主要介紹了SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

