【剑指offer】合并两个有序的链表
来源:互联网 发布:网络作家如何赚钱 编辑:程序博客网 时间:2024/05/22 00:30
【文章结构】:
1 实现方法1--自己编写
2 参考剑指offer代码
【我的解题思路】
1 编写一个函数,可以在链表尾部加入节点(linklist.addNodeAtTail(pNew,pNow))
public Node addNodeAtTail(Node newNode,Node currNode){Node pNew=currNode;if(currNode==null){ pNew=newNode; head=pNew; tail=pNew;if(newNode!=null){size++;currNode=pNew;}}else if(newNode!=null){{currNode.next=newNode;currNode=newNode;tail=newNode;size++;}} return currNode;}2 比较两个有序链表的第一个值,并将最小值添加到新链表中
public void mergeLinklist(Node pHead1,Node pHead2){Node cuNode=null;while(pHead1!=null||pHead2!=null){if(pHead1==null||pHead2!=null&&pHead1.value>=pHead2.value){cuNode=addNodeAtTail(pHead2,cuNode);pHead2=pHead2.next;}else if(pHead2==null||pHead1!=null&&pHead1.value<=pHead2.value){ cuNode=addNodeAtTail(pHead1,cuNode); pHead1=pHead1.next;}}测试程序及运行结果:
MyLinkList linklist6=new MyLinkList();//Node addNodeAtTail(Node newNode,Node currNode)Node p1=linklist4.head;Node p2=linklist5.head;//mergeLinklist(p1,p2,linklist6);linklist6.mergeLinklist(p1, p2);//linklist6.mergeLinklist(p1, null);linklist6.print(linklist6.head);
the elements in the list :3 4 5 7 14 the elements in the list :2 3 6 11 the elements in the list :2 3 3 4 5 6 7 11 14
【参考答案方法:】
//答案中采用递归方法,递归方法就不用while循环了。。。,之前还一直担心递归结果回去会返回链表的尾节点。。。,哎 学艺不精!
public Node mergeLinklist_Ans(Node pHead1,Node pHead2){if(pHead1==null)return pHead2;if(pHead2==null)return pHead1;Node mergeNode=null;if(pHead1.value>=pHead2.value){mergeNode=pHead2;mergeNode.next=mergeLinklist_Ans( pHead1,pHead2.next);}else{mergeNode=pHead1;mergeNode.next=mergeLinklist_Ans( pHead1.next,pHead2);}return mergeNode;}
0 0
- 剑指offer----合并两个有序链表
- 《剑指offer》合并两个有序链表
- 剑指offer-合并两个有序链表
- 【剑指offer】合并两个有序的链表
- 3.剑指offer-合并两个有序的链表
- 《剑指offer》合并两个有序的数组
- 剑指offer 面试题17 合并两个有序链表
- 剑指offer(8)-合并两个有序链表
- 剑指Offer---面试题17:合并两个有序链表
- 剑指offer--递归非递归合并两个有序链表
- 剑指offer面试题-合并两个有序链表
- 剑指offer刷题之c++实现的合并两个有序的链表
- 剑指offer系列之15:合并两个有序的链表
- 有序的合并两个有序链表
- 【面试题】剑指Offer-17-合并两个有序的单链表
- 剑指Offer-17-合并有序链表
- 剑指Offer——有序链表的合并
- 二叉树的镜像 (剑指offer)!!!(两个有序链表的合并,链表的逆置)
- sublime Text 2搭建python开发环境
- Confd与Rancher-metadata结合的妙用
- iOS 远程消息推送
- 内存泄露的总结
- 欢迎使用CSDN-markdown编辑器
- 【剑指offer】合并两个有序的链表
- python文件open()函数参数:r和rb比较
- 开源框架:JFinal框架
- leetcode 数组求子集(subset)
- OpenCV计算轮廓矩
- 理解osIII中的消息队列
- The type org.apache.http.Header cannot be resolved. It is indirectly referenced from required .class
- 西安十五日游 day15 模拟赛
- 多线程GCD的详细讲解 任务和队列(串行队列,并发队列)