剑指offer:合并两个排序的链表
2015-08-16 22:24
344 查看
#include <iostream> #include <stdio.h> #include <malloc.h> using namespace std; struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1 == NULL) return pHead2; else if(pHead2 == NULL) return pHead1; ListNode * res = NULL; ListNode * tmp = NULL; while(pHead1 && pHead2) { if(pHead1->val > pHead2->val) { if(res == NULL) res = tmp = pHead2; else { res->next = pHead2; res = res->next; } pHead2 = pHead2->next; } else { if(res == NULL) res = tmp = pHead1; else { res->next = pHead1; res = res->next; } pHead1 = pHead1->next; } } if(pHead1 == NULL) res->next = pHead2; if(pHead2 == NULL) res->next = pHead1; return tmp; } }; int main() { int i; ListNode * p = (ListNode*)malloc(sizeof(ListNode)); p->val = 1; p->next = NULL; ListNode * p1 = p; ListNode * q = (ListNode*)malloc(sizeof(ListNode)); q->val = 1; q->next = NULL; ListNode * q1 = q; for(i = 2; i < 5; i++) { p->next = (ListNode*)malloc(sizeof(ListNode)); p = p->next; p->val = i; p->next = NULL; q->next = (ListNode*)malloc(sizeof(ListNode)); q = q->next; q->val = i; q->next = NULL; } Solution s; ListNode * node = s.Merge(p1, q1); while(node) { cout << node->val << " "; node = node->next; } return 0; }
相关文章推荐
- jquery-ui.css源码分享
- 简单 js 验证
- jquery获取、改变元素属性值2
- jQuery页面加载初始化的几种方法
- Javascript模块化编程:require.js的用法
- JSBadgeView的使用
- JavaScript--点击颜色,为主题更换背景颜色
- jquery-ui.js源码分享
- JavaScript中的this代表什么?
- JavaScript--利用setInterval或setTimeout实现背景颜色轮播
- jquery获取、改变元素属性值
- js中的事件
- jQuery上传插件Uploadify 3.2使用
- 去哪网实习总结:JavaWeb中使用jquery提交表单(JavaWeb)
- JvaScript--使用js添加数据,点击按钮,将内容放入表格中
- 45种Javascript技巧大全
- JS设置 cookie,删除 cookie
- CSS Alignment:元素对齐问题
- 【JavaScript】AJax
- Javascript 基础