[算法学习]反转链表
2016-02-18 13:52
302 查看
问题描述: 输入一条链表,将链表反转后返回。
附:源码地址
解法一:用递归
解法: 由于反转后头结点会成为尾结点,尾结点会成会头结点。所以从头结点开始反转前后结点关系。比较简单,所以这里直接贴出代码。参考代码如下
[code]/** * 递归 * @param head * @return */ public static ListNode reverseList1(ListNode head) { if(head==null) { return null; } ListNode parent=head.next; if(parent==null) { return head; } head.next=null; return reverseList1(head,parent); } /** * 递归,绑定父子节点关系 * @param child * @param parent * @return */ private static ListNode reverseList1(ListNode child,ListNode parent) { if(parent==null) { return child; } ListNode last=parent.next; parent.next=child; return reverseList1(parent, last); }
解法二:用循环,效率更高
参考代码如下
[code]/** * 反转链表,返回新的头节点 * @param head * @return */ public static ListNode reverseList(ListNode head) { if(head==null) { return null; } ListNode pChild=head; ListNode pParent=pChild.next; ListNode pLast=null; pChild.next=null; while (pParent!=null) { // 绑定关系 pLast=pParent.next; pParent.next=pChild; // 设定关系 pChild=pParent; pParent=pLast; } return pChild; }
附:源码地址
相关文章推荐
- [算法学习]计算出二进制数中1的个数
- TCP长肥管道
- python2.7爬虫实战(房地产信息抓取)
- c++变量的作用域、生存期和可见性
- phpExcel常用方法详解【附有php导出excel加超级链接】
- 【python】编程语言入门经典100例--2
- java判断字符串包含某个字符段
- [算法学习]栈中的最小值
- Java开发中的23种设计模式详解(转)
- CnetOS7 ifconfig command not found
- 关于重载函数的一些学习
- CFF前端沙龙总结
- 远程连接命令
- MySQL数据库最大连接数的修改
- Java线程(九):Condition-线程通信更高效的方式
- nginx
- shell脚本个人总结
- [BZOJ3631] [JLOI2014] 松鼠的新家
- 2、修改MyEclipse中生成的模板servlet的方法
- [算法学习]栈的出栈序列