本文主要是介绍单链表逆转(递归和迭代的实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单链表逆转递归和迭代的实现,代码如下:
public class LinkReverse {static class Node{int data;Node next;public Node(int data, Node next) {this.data = data;this.next = next;}}/*** 递归的实现* @param node*/private static Node reverseLink(Node node, Node prev) {if(node.next == null) {node.next = prev;return node;} else {//该处比较难理解,这个是始终返回的第一个节点,一层层的向上传递Node head = reverseLink(node.next, node);node.next = prev;return head;}}/*** 迭代的实现链表的逆转* @return*/private static Node reverseLinkByIterate(Node node) {Node prev = null;Node now = node;while(now != null) {Node next = now.next;now.next = prev;prev = now;now = next;}return prev;}public static void main(String[] args) {Node node5 = new Node(5, null);Node node4 = new Node(4, node5);Node node3 = new Node(3, node4);Node node2 = new Node(2, node3);Node node1 = new Node(1, node2);// Node node = reverseLinkByIterate(node1);Node node = reverseLink(node1, null);while(node != null) {System.out.println(node.data);node = node.next;}}}
说明:
迭代的很好理解,递归的不太好理解,这里简单的说一下递归的思路吧
递归的思路其实是递归的先找到最后一个节点,完成最后一个节点的逆转,然后把最后一个节点一层层的向上传递,之前的节点一步步独立的实现逆转即可,最后返回最后一个节点,也就是头节点即可
这篇关于单链表逆转(递归和迭代的实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!