标签:两种方法 ext return eve 两种 ret 第一个 nbsp turn
翻转的两种方法:非递归与递归。
1、非递归方法
public ListNode reverse(ListNode node) { Node prev = null; while (node != null) { //每次新建一个链表,用来读取每次循环操作的一个节点 ListNode tmp = node; //将传入的链表指向下一个节点,下次循环将下一个节点重新赋给tmp node = node.next; //将取出的节点的下一个节点置为上次操作后已完成翻转的部分节点 tmp.next = prev; //将新的完成翻转部分的节点重新赋给待输出的链表 prev = tmp; } //输出已完成翻转的链表 return prev; }
2、递归方法
public Node reverse(ListNode node) { ListNode prev = null; //递归判断条件,当链表为空或只有一个节点时,跳出递归 if (node == null || node.next == null) { prev = node; } else { //完成原链表完成从第二个节点到最后一个节点间的翻转 ListNode tmp = reverse(node.next); //原链表第二个节点指向第一个节点 node.next.next = node; //原链表第一个节点指向空,完成链表翻转 node.next = null; prev = tmp; } return prev; }
标签:两种方法 ext return eve 两种 ret 第一个 nbsp turn
原文地址:https://www.cnblogs.com/stupid-chan/p/11351072.html