每天一道算法题(16)——合并已排序的链表
2015-06-29 09:16
225 查看
题目
合并已经排序的2条链表思路
递归策略:对于每一层递归,寻找最小的节点,然后嵌套递归非递归:定义两个指针,初始化指向头结点,比较指针并移动节点指向
代码
非递归:ListNode* mergeList(ListNode* List1,ListNode* List2) { if(!List1) return List2; if(!List2) return List1; ListNode* head=NULL; ListNode* tail=NULL; while(List1||List2){ if(List1->value<List2->value||!List2){//还有list2已经为空的情况 tail->next=List1; tail=tail->next; List1=List1->next; } else{ tail->next=List2; tail=tail->next; List2=List2->next; } if(!head) head=tail; } return head; }
递归:
ListNode* mergeList(ListNode* List1,ListNode* List2) { if(!List1) return List2; if(!List2) return List1; ListNode* head=NULL; if(List1->value<List2->value){ head=List1; head->next=mergeList(List1->next,List2); } else{ head=List2; head->next=mergeList(List1,List2->next); } return head; }
相关文章推荐
- 微信现金红包高级红包接口开发亲测
- 洛谷1540 机器翻译
- ios属性的扩展
- iOS常用加密方法(aes、md5、base64)
- 第16周周五:数据库连接与随机数的使用 问题
- 作业6.13
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 如何在 Git 里撤销(几乎)任何操作
- 关系型数据库和非关系型数据库
- tomcat部署 java.lang.OutOfMemoryError: PermGen space
- vim_command_sed
- 算法导论2.1——插入排序
- 即将被互联网+玩坏的电视游戏
- 127.判断字符串是否为回文
- [华为机试练习题]8.汽水瓶
- .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
- 在51系列中data,idata,xdata,pdata的区别
- nginx服务器安装及配置文件详解
- ssh免密码登陆(多台配置)
- .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用