java 單鏈表反轉 遞迴法 遍歷法
阿新 • • 發佈:2018-11-10
以下是一個例子
package com.haha.demo.util; public class node { static class Node { Integer data; Node next; } static Node readyNode() { Node linkNode1 = new Node(); linkNode1.data = 1; Node linkNode2 = new Node(); linkNode2.data = 2; Node linkNode3 = new Node(); linkNode3.data = 3; Node linkNode4 = new Node(); linkNode4.data = 4; Node linkNode5 = new Node(); linkNode5.data = 5; Node linkNode6 = new Node(); linkNode6.data = 6; linkNode1.next = linkNode2; linkNode2.next = linkNode3; linkNode3.next = linkNode4; linkNode4.next = linkNode5; linkNode5.next = linkNode6; return linkNode1; } /** * 遞迴法單鏈表反轉 * @param node * @return */ static Node reverseLinkedList(Node node) { if (node == null || node.next == null) { return node; } else { Node headNode = reverseLinkedList(node.next); node.next.next = node; node.next = null; return headNode; } } /** * 遍歷法單鏈表反轉 * @param node * @return */ static Node reverseBlLinkedList(Node node) { Node previousNode = null; //前驅節點 Node currentNode = node; //當前節點 Node headNode = null; while (currentNode != null) { Node nextNode = currentNode.next; if (nextNode == null) { headNode = currentNode; } currentNode.next = previousNode; previousNode = currentNode; currentNode = nextNode; } return headNode; } public static void main(String [] args){ //順序法連結串列反轉 Node kk = readyNode(); Node gg = reverseBlLinkedList(kk); System.out.println("反轉完畢"); //遞迴法連結串列反轉 // Node kk = readyNode(); // Node gg = reverseLinkedList(kk); // System.out.println(12312); } }