[LeetCode]Merge Two Sorted Lists
2015-07-12 12:38
302 查看
向一个新的链表中不断的插入元素
ListNode *Head =NULL;
ListNode *p=NULL;
ListNode *p2 = new ListNode(tmp);
if(Head==NULL)
Head= p2;
else
p->next = p2;
p = p2;
注意有链表为空的情况
使用ListNode **p
ListNode *Head =NULL;
ListNode *p=NULL;
ListNode *p2 = new ListNode(tmp);
if(Head==NULL)
Head= p2;
else
p->next = p2;
p = p2;
注意有链表为空的情况
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { struct ListNode *head=NULL; struct ListNode *p; if(l1==NULL) return l2; if(l2==NULL) return l1; while(l1!=NULL||l2!=NULL){ int tmp; if(l1!=NULL&&l2!=NULL){ if(l1->val<l2->val){ tmp = l1->val; l1 = l1->next; } else{ tmp = l2->val; l2 = l2->next; } } else if(l1==NULL){ tmp = l2->val; l2 = l2->next; } else{ tmp = l1->val; l1 = l1->next; } struct ListNode *p2 = (struct ListNode*) malloc(sizeof(struct ListNode)); p2->val = tmp; if(head == NULL){ head = p2; // p = p2; } else p->next = p2; p = p2; } p->next = NULL; return head; }
使用ListNode **p
class Solution { public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *header = NULL, **p; for (p = &header; l1 && l2; p = &(*p)->next) { if (l1->val <= l2->val) { *p = new ListNode(l1->val); l1 = l1->next; } else { *p = new ListNode(l2->val); l2 = l2->next; } } for (ListNode *leave = l1 ? l1 : l2; leave; leave = leave->next, p = &(*p)->next) *p = new ListNode(leave->val); return header; } };
相关文章推荐
- 那个说nim作者基础不行的, 吐槽下.
- 分支限界法
- jquery.fn.extend与jquery.extend--(初体验二)
- RocketMQ-04自带优化
- 【sql】——日志表过大,整理日志表
- struts2 CVE-2012-0838 S2-007 Remote Code Execution && Hotfix
- 浅析SkipList跳跃表原理及代码实现
- Iterator与Enumeration的区别
- mac adt导出APK崩溃,直接调试正常解决方法
- hdu 5280 Senior's Array 修改区间和最大
- leetCode 45.Jump Game II (跳跃游戏) 解题思路和方法
- 053第246题
- JAVA32问
- 在 Windows2003 中启用分布式事务遇到的部分问题
- host文件
- 字符串 HDU 1039
- 黑马程序员——JAVA基础---数组
- TAIL Queue数据结构
- 【SQL】——行列转换
- 通过内存盘提高MSMQ的消息吞吐能力