Java反轉(zhuǎn)鏈表測(cè)試過(guò)程介紹
導(dǎo)讀
本文主體為單項(xiàng)鏈表和雙向鏈表的反轉(zhuǎn)以及簡(jiǎn)單的測(cè)試,以便于理解鏈表相關(guān)的算法題目。
鏈表
特點(diǎn)
- 便于增刪數(shù)據(jù),不便于尋址
- 在內(nèi)存中屬于跳轉(zhuǎn)結(jié)構(gòu)
單鏈表和雙鏈表的定義
單鏈表: 值,一條next指針
雙鏈表:值,一條last指針,一條next指針
單向鏈表
Node結(jié)點(diǎn)
public static class Node { public int value; public Node next; public Node(int value) { this.value = value; } @Override public String toString() { ArrayList<Integer> nums = new ArrayList<>(); Node node = this; while (node != null) { nums.add(node.value); node = node.next; } return nums.toString(); } }
反轉(zhuǎn)單向鏈表
public static Node reverseLinkedList(Node head) { Node next = null; Node pre = null; while (head != null) { next = head.next; head.next = pre; pre = head; head = next; } return pre; }
測(cè)試函數(shù)
public static void main(String[] args) { Node node = new Node(1); node.next = new Node(2); node.next.next = new Node(3); node = reverseLinkedList(node); System.out.println(node); }
輸出結(jié)果如下:
[3, 2, 1]
雙向鏈表
Node結(jié)點(diǎn)
public static class DoubleList { public int value; public DoubleList next; public DoubleList last; public DoubleList(int value) { this.value = value; } @Override public String toString() { ArrayList<Integer> nums = new ArrayList<>(); DoubleList node = this; while (node != null) { nums.add(node.value); node = node.next; } return nums.toString(); } }
反轉(zhuǎn)雙向鏈表
public static DoubleList reverseDoubleList(DoubleList head) { DoubleList next; DoubleList pre = null; while (head != null) { next = head.next; head.next = pre; // 注意和單項(xiàng)鏈表不一樣的地方只有這一行,其他都基本一樣 head.last = next; pre = head; head = next; } return pre; }
測(cè)試代碼
public static void main(String[] args) { DoubleList node1 = new DoubleList(1); node1.next = new DoubleList(2); node1.next.last = node1; node1.next.next = new DoubleList(3); node1.next.next.last = node1.next; System.out.println("reverseDoubleList(node1) = " + reverseDoubleList(node1)); }
輸出結(jié)果如下:
reverseDoubleList(node1) = [3, 2, 1]
到此這篇關(guān)于Java反轉(zhuǎn)鏈表測(cè)試過(guò)程介紹的文章就介紹到這了,更多相關(guān)Java反轉(zhuǎn)鏈表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
簡(jiǎn)要分析Java多進(jìn)程編程的并發(fā)控制
這篇文章介紹了簡(jiǎn)要分析Java多進(jìn)程編程的并發(fā)控制,主要針對(duì)內(nèi)存獲取方面,需要的朋友可以參考下2015-11-11drools的簡(jiǎn)單入門案例場(chǎng)景分析
drools是一款由JBoss組織提供的基于Java語(yǔ)言開發(fā)的開源規(guī)則引擎,可以將復(fù)雜且多變的業(yè)務(wù)規(guī)則從硬編碼中解放出來(lái),這篇文章主要介紹了drools的簡(jiǎn)單入門案例,需要的朋友可以參考下2022-05-05Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類封裝
這篇文章主要介紹了Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09詳解@Autowired(required=false)注入注意的問(wèn)題
這篇文章主要介紹了@Autowired(required=false)注入注意的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改
最近項(xiàng)目需要在JPA中使用ID進(jìn)行批量更新,所以下面這篇文章主要給大家介紹了關(guān)于使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Spring Boot使用模板freemarker的示例代碼
本篇文章主要介紹了Spring Boot使用模板freemarker的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10Spring Boot+Shiro實(shí)現(xiàn)一個(gè)Http請(qǐng)求的Basic認(rèn)證
本文向向大家仔細(xì)的介紹了如何使用Shiro實(shí)現(xiàn)一個(gè)Http請(qǐng)求的Basic認(rèn)證,有此需求的朋友可以參考下本文2021-06-06Spring Cloud根據(jù)服務(wù)名獲取服務(wù)的ip端口問(wèn)題
這篇文章主要介紹了Spring Cloud根據(jù)服務(wù)名獲取服務(wù)的ip端口,本篇示例我就以Nacos注冊(cè)中心為例了,下面是我注冊(cè)的兩個(gè)服務(wù),需要的朋友可以參考下2022-09-09