LeetCode---Merge Two Sorted Lists
2015-09-29 20:44
253 查看
题目大意:给出两个排序了的链表,要求将它们合并成一个链表,新链表由给出的两个链表拼接而成。
算法思想:
1.判断给出的链表是否有空链表,若有则直接返回不空的。
2.选取两个链表中第一格元素较小的节点做为新链表的头结点。
3.遍历两个链表,将节点值小的节点插入新链表知道,有一个链表遍历完为止。
4.将非空的链表接在新链表的末尾。
5.返回合并后的链表。
代码如下:
算法思想:
1.判断给出的链表是否有空链表,若有则直接返回不空的。
2.选取两个链表中第一格元素较小的节点做为新链表的头结点。
3.遍历两个链表,将节点值小的节点插入新链表知道,有一个链表遍历完为止。
4.将非空的链表接在新链表的末尾。
5.返回合并后的链表。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==NULL) return l2; if(l2==NULL) return l1; ListNode *l=NULL,*temp=NULL,*head; if(l1->val<l2->val){ l=l1; head=l1; l1=l->next; } else{ l=l2; head=l2; l2=l->next; } while(l1!=NULL&&l2!=NULL){ if(l1->val<=l2->val){ temp=l1->next; l->next=l1; l=l1; l1=temp; } else{ temp=l2->next; l->next=l2; l=l2; l2=temp; } } if(l1==NULL) l->next=l2; else l->next=l1; return head; } };
相关文章推荐
- 数据结构学习:栈
- XML解析--NSXMLParser和TouchXML
- R语言学习笔记(2)
- 使用lock&condition实现生产者消费者
- hdu 5455__Fang Fang
- iOS中各种动画分类
- Java程序执行Linux命令
- Number of Digit One
- 是否需要有代码规范
- 【基础练习】【倍增LCA】codevs1036 商务旅行题解
- wpf 关于鼠标换轮放大缩小只有120的问题
- Nginx配置&负载均衡实战
- 封装SlideQQ样式
- HDU 5479(栈的应用)
- redis导库
- android学习-----Fragment
- 9.13~9.30刷题(shui)题解
- SAX操作XML
- mac下tomcat的安装与配置
- axis webservice