java中如何實(shí)現(xiàn)逆轉(zhuǎn)單鏈表?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供滿城企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為滿城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
java 實(shí)現(xiàn)單鏈表逆轉(zhuǎn)詳解
實(shí)例代碼:
class Node { Node next; String name; public Node(String name) { this.name = name; } /** * 打印結(jié)點(diǎn) */ public void show() { Node temp = this; do { System.out.print(temp + "->"); temp = temp.next; }while(temp != null); System.out.println(); } /** * 遞歸實(shí)現(xiàn)單鏈表反轉(zhuǎn),注意:單鏈表過長,會出現(xiàn)StackOverflowError * @param n * @return */ public static Node recursionReverse(Node n) { long start = System.currentTimeMillis(); if(n == null || n.next == null) { return n; } Node reverseNode = recursionReverse(n.next); n.next.next = n; n.next = null; System.out.println("遞歸逆置耗時(shí):" + (System.currentTimeMillis() - start) + "ms..."); return reverseNode; } /** * 循環(huán)實(shí)現(xiàn)單鏈表反轉(zhuǎn) * @param n * @return */ public static Node loopReverse(Node n) { long start = System.currentTimeMillis(); if(n == null || n.next == null) { return n; } Node pre = n; Node cur = n.next; Node next = null; while(cur != null) { next = cur.next; cur.next = pre; pre = cur; cur = next; } n.next = null; n = pre; System.out.println("循環(huán)逆置耗時(shí):" + (System.currentTimeMillis() - start) + "ms..."); return pre; } @Override public String toString() { return name; } public static void main(String[] args) { int len = 10; Node[] nodes = new Node[len]; for(int i = 0; i < len; i++) { nodes[i] = new Node(i + ""); } for(int i = 0; i < len - 1; i++) { nodes[i].next = nodes[i+1]; } /* try { Thread.sleep(120000); } catch (InterruptedException e) { e.printStackTrace(); }*/ Node r1 = Node.loopReverse(nodes[0]); r1.show(); Node r = Node.recursionReverse(r1); r.show(); } }
總結(jié)
對于遞歸和循環(huán),推薦使用循環(huán)實(shí)現(xiàn),遞歸在單鏈表過大時(shí),會出現(xiàn)StatckOverflowError,遞歸涉及到方法的調(diào)用,在性能上也弱于循環(huán)的實(shí)現(xiàn)
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。