合并两个排序的链表
来源:互联网 发布:ubuntu的samba服务器 编辑:程序博客网 时间:2024/06/05 05:23
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
每个链表从左端开始遍历,一边遍历一边创建新链表即可。
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};ListNode* Merge(ListNode* pHead1, ListNode* pHead2){ListNode *t = NULL;ListNode*r = NULL;ListNode*p = pHead1, *q = pHead2;while(p && q){if(p->val <= q->val){if(t == NULL){t = new ListNode(p->val);r = t;}else{r->next = new ListNode(p->val);r = r->next;}p = p->next;}else{if(t == NULL){t = new ListNode(q->val);r = t;}else{r->next = new ListNode(q->val);r = r->next;}q = q->next;}}while(p){if(t == NULL){t = new ListNode(p->val);r = t;}else{r->next = new ListNode(p->val);r = r->next;}p = p->next;}while(q){if(t == NULL){t = new ListNode(q->val);r = t;}else{r->next = new ListNode(q->val);r = r->next;}q = q->next;}return t;}void print(ListNode*p){while(p){printf("%d ", p->val);p = p->next;}putchar(10);}int main(void){ListNode*a = new ListNode(1);ListNode*p = a;p->next = new ListNode(3);p = p->next;p->next = new ListNode(5);p = p->next;p->next = NULL;ListNode*b = new ListNode(2);p = b;p->next = new ListNode(4);p = p->next;p->next = new ListNode(6);p= p->next;p->next = NULL;print(a);print(b);print(Merge(a, b));return 0;}
0 0
- 两个已排序链表的合并
- 两个已排序链表的合并
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序了的链表
- 合并两个排序的链表
- 23.合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 黑马程序员学习(六) 内部类和异常机制
- Android - 视图点击效果
- Fetching https://dl-ssl.google.com/***************
- 定义属性时NSArray,NSString,NSDictionary为何要用copy
- srs之hls热备
- 合并两个排序的链表
- 微信支付的一点操作经验
- 15_09_15 ( NullPointerException ) 空指针异常
- DrawText()
- 实现Singleton模式
- Lucas定理(大组合数的取模)
- PostgreSQL与MySQL比较
- liunx操作系统实现u盘的挂载和读取----redhut
- 深度优先搜索和广度优先搜索的代码实现