已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序
2016-04-18 11:23
483 查看
方法1:
方法2:递归
Node * Merge(Node *head1 , Node *head2) { if ( head1 == NULL) return head2 ; if ( head2 == NULL) return head1 ; Node *head = NULL ; Node *p1 = NULL; Node *p2 = NULL; if ( head1->data < head2->data ) { head = head1 ; p1 = head1->next; p2 = head2 ; } else { head = head2 ; p2 = head2->next ; p1 = head1 ; } Node *pcurrent = head ; while ( p1 != NULL && p2 != NULL) { if ( p1->data <= p2->data ) { pcurrent->next = p1 ; pcurrent = p1 ; p1 = p1->next ; } else { pcurrent->next = p2 ; pcurrent = p2 ; p2 = p2->next ; } } if ( p1 != NULL ) pcurrent->next = p1 ; if ( p2 != NULL ) pcurrent->next = p2 ; return head ; }
方法2:递归
Node * MergeRecursive(Node *head1 , Node *head2) { if ( head1 == NULL ) return head2 ; if ( head2 == NULL) return head1 ; Node *head = NULL ; if ( head1->data < head2->data ) { head = head1 ; head->next = MergeRecursive(head1->next,head2);//递归 } else { head = head2 ; head->next = MergeRecursive(head1,head2->next); } return head ; }
相关文章推荐
- 文字超出部分用省略号显示
- SVN 和 Git 在日常使用中的明显差异
- 盒子代码编写
- Android实战技巧:深入解析AsyncTask
- Ecplise Show in Explorer
- 发布一个基于CSDN Code的学习测试仓库
- WordPaster2-正式包布署说明
- ContactsUtil 工具类 - 转载
- nginx安装-源码编译
- 在vc++工程中只使用tlb文件的用法
- 欧洲议会将举办区块链和虚拟货币速成班
- 数据结构-稀疏矩阵
- 遗传算法详解(GA)(个人觉得很形象,很适合初学者)
- 【Java】——J2EE的十三个规范
- 上传类、图片处理类
- 不走弯路之Android开发高薪就业指导
- cocoa pods 安装,使用教程
- 自定义类型转换器
- Android 动态添加Fragment
- RTMP 封包详解