建立网站的方法,营销型企业网站系统模板下载,seo发外链工具,云服务器免费试用题目 反转一个单链表 实现 1.#xff08;递归法#xff09;利用递归思想#xff0c;从头结点递归遍历到最后一个结点#xff0c;递归返回最后一个结点并修改指针#xff0c;使指针指向前一个结点。 2.#xff08;移动指针#xff09;定义当前结点指针cur#xff0c;前一…题目 反转一个单链表 实现 1.递归法利用递归思想从头结点递归遍历到最后一个结点递归返回最后一个结点并修改指针使指针指向前一个结点。 2.移动指针定义当前结点指针cur前一个结点指针pre循环迭代计算下一个结点指针每次将当前结点指针反转指向前一个结点。 定义结点 Node.java public class Node {public int value;public Node next;public Node(int data) {this.value data;}
} NodeReverse.java import java.util.Stack;public class NodeReverse {//单链表反转//反转递归思想public static Node reverseRecur(Node node) {if (node null || node.next null) {return node;} else {Node nn reverseRecur(node.next);//下一个节点的指针指向上一个节点node.next.next node;//断掉当前节点指向下一节点的指针node.next null;return nn;}}//反转移动指针public static Node reverseMovePoint(Node node) {//前一个节点指针Node pre null;//当前节点指针Node cur node;while (cur ! null) {//当前节点的下一个节点Node nextNode cur.next;//当前节点指向下一个节点的指针反转指向前一个节点cur.next pre;//当前节点变前一个(pre)节点前一个节点的指针指向当前节点pre cur;//下一个节点变当前(cur)节点当前节点指针指向下一个节点cur nextNode;}return pre;}//倒着打印链表//递归倒着打印public static void printTailRec(Node node){if (node.next null){System.out.print(node.value );return;} else {printTailRec(node.next);}System.out.print(node.value );}//遍历用栈存储倒着打印public static void printTailStack(Node node){StackNode stack new StackNode();if (node null){System.out.println(已经为null);return;}else {while (node ! null){stack.push(node);node node.next;}while (!stack.isEmpty()){System.out.print(stack.pop().value );}}}//打印单链表public static void printLinked(Node head) {Node tmp head;while (true) {System.out.print(tmp.value );if (tmp.next null)break;elsetmp tmp.next;}}public static void main(String[] args) {Node node1 new Node(1);Node node2 new Node(2);Node node3 new Node(3);Node node4 new Node(4);node1.next node2;node2.next node3;node3.next node4;System.out.println(反转前打印);printLinked(node1);System.out.println();Node n reverseRecur(node1);System.out.println(反转后打印);printLinked(n);System.out.println();Node nn reverseMovePoint(n);System.out.println(再次反转后打印);printLinked(nn);System.out.println();//倒着打印链表System.out.println(倒着打印链表);printTailRec(node1);System.out.println();printTailStack(node1);}
} 输出结果 反转前打印1 2 3 4 反转后打印4 3 2 1 再次反转后打印1 2 3 4 倒着打印链表4 3 2 1 4 3 2 1 转载于:https://www.cnblogs.com/limaosheng/p/10401573.html