【笔试】34、反转链表
2015-08-30 10:23
477 查看
/**************************************************************************************** *题目:反转链表 * 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。 *时间:2015年8月30日09:54:30 *文件:ReverseLink.java *作者:cutter_point ****************************************************************************************/ package bishi.Offer50.y2015.m08.d30; import bishi.Offer50.y2015.m08.d26.*; public class ReverseLink { /** * 反转链表 * @param head * @return */ public LinkNode reverLink(LinkNode head) { if(head == null) return null; else if(head != null && head.m_pNext == null) { return head; }//else if LinkNode front = null; LinkNode pNode = head.m_pNext; LinkNode reverNode = pNode.m_pNext; while(reverNode != null) { //把我们的当前节点和前一个节点的指向确定,然后把三个节点整体后移一位 pNode.m_pNext = front; front = pNode; pNode = reverNode; reverNode = pNode.m_pNext; }//while pNode.m_pNext = front; reverNode = new LinkNode(); reverNode.m_pNext = pNode; return reverNode; } /** * 当我们的第一个节点就是我们要用的节点,也就是不是用一个空的节点作为头结点的方式 * @param head * @return */ public LinkNode reverLink2(LinkNode head) { LinkNode pReversedHead = null; LinkNode pNode = head; LinkNode pPre = null; while(pNode != null) { //开始交换指针的方向 LinkNode pNext = pNode.m_pNext; if(pNext == null) { //下一个节点是空的,说明到了末尾 pReversedHead = pNode; }//if pNode.m_pNext = pPre; pPre = pNode; pNode = pNext; }//while return pReversedHead; } @org.junit.Test public void Test() { LinkList link = new LinkList(); link.addTail(8);link.addTail(7);link.addTail(6);link.addTail(5);link.addTail(4);link.addTail(3); link.addTail(2);link.addTail(1);link.addTail(0);link.addTail(-1);link.addTail(-2);link.addTail(-3); //逆序输出 LinkList.PrintListReversingly_Recursively(link.getHead()); System.out.println(); //我们反转之后看看输出 ReverseLink rl = new ReverseLink(); LinkNode pReverHead = rl.reverLink(link.getHead()); LinkList.PrintListReversingly_Recursively(pReverHead); } }
相关文章推荐
- Citrix xendesktop静态分发模式下合理管控分配虚拟桌面本地管理员权限
- 622 Vote【贪心】
- 程序员面试金典2.1:编写代码,移除未排序的链表中的重复节点
- 1112 -- 简单数据统计
- hibernate——继承关系以及三个subclass标签的区别- 一对多,多对多
- zzuli OJ 1080: a+b(多实例测试3)
- 单链表反转
- Cookie/Session的机制与安全
- AngularJS 表单(ng-form)验证
- 二分图学习小结
- 1111 -- 阶乘之和
- 1110 -- 3n+1中文版(简化版)
- zzuli OJ 1079: a+b(多实例测试2)
- JavaScript 设计模式之----单体(单例)模式
- 【笔试】33、链表中倒数第k个结点
- IE8下jQuery改变png图片透明度时出现的黑边问题
- poj 1159 Palindrome 最长公共子序列 滚动数组
- Postfix邮件服务器的原理和postfix + dovecot配置,使用Thunderbird发送邮件和SMTP认证
- 1109 -- aabb
- 1108 -- 最简单的循环