package LinedList;

public class ReverseASinglyLinkedList {
//解法一:迭代。
public ListNode reverseList(ListNode head) {
ListNode previous = null;
ListNode current = head;
while (current != null) {
ListNode next = current.next;
current.next = previous;
previous = current;
current = next;
}
return current;
}
/**
* 解法二:递归
* 递归的思路其实和迭代一样,就是处理两个节点,让它们之间的指针反转。
* 只是,迭代是从头到尾依次处理,需要一个额外的指针来指向下一个节点。
* 而递归是从尾到头,回溯的时候会有当前的节点,所以不需要额外的指针。
* 还需要注意的是:p是反转后的整个链表的头节点,它第一次找到后,就没有作任何处理。
* 而不是每次要处理(反转)的那个节点。
*/
public ListNode reverseList2(ListNode head) {
if (head==null||head.next==null)
return head;
ListNode p=reverseList2(head.next);
head.next.next=head;
head.next=null;
return p;
}
}

最新文章

  1. BZOJ3160: 万径人踪灭
  2. WebApi 接口测试工具:WebApiTestClient
  3. [原创]CI持续集成系统环境---部署Gitlab环境完整记录
  4. MongoDB的安装、配置服务(转)
  5. 使用Flex4的PopUpManager的addPopUp() 方法弹出 removeChild异常的解决办法
  6. 透过数据看现实,漫谈实况FIFA的这些年
  7. jquery 插件开发及extend
  8. [React Native] Reusable components with required propType
  9. 从lca到树链剖分 bestcoder round#45 1003
  10. javaWEB总结(6):ServletRequest
  11. awk 里的substr()
  12. ls-grep-find组合命令解决企业问题实战
  13. Intellij IDEA查看所有断点
  14. 第一册:lesson seventy one.
  15. 大明A+B
  16. 修改mysql忽略大小写
  17. 前端 HTML form表单标签 input标签 type属性 重置按钮 reset
  18. 使用 IntraWeb (7) - 主模板
  19. Python基础入门(一)
  20. Singleton 单例模式 MD

热门文章

  1. 41 修改树莓派交换分区 SWAP 的大小
  2. 前端css命名规范----BEM
  3. [LeetCode] 208. Implement Trie (Prefix Tree) 实现字典树(前缀树)
  4. [LeetCode] 82. Remove Duplicates from Sorted List II 移除有序链表中的重复项之二
  5. 关于Dev-C++用户所必须知道的知识
  6. wpf “{DependencyProperty.UnsetValue}”不是属性“Background”的有效值。异常
  7. rdd 基本操作
  8. linux-centos安装图解及配置IP远程连接
  9. AngularJS入门Demo
  10. CopyOnWriteArraySet 源码分析