[LeetCode] Merge Two Sorted Lists
2016-01-13 13:57
429 查看
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Subscribe to see which companies asked this question
题意: 给两个已经按从小到大排好序的整数数组, 要求将这两个数组按从小到大排序成一个新的数组.
思路:
1:若采用给新的数组重新分配内存的方法,这道题思路非常简单,这里不详述;
2:这里作者采用的是不重新分配内存的办法,以原有节点为单元,改变指针的指向,重新排序.
Subscribe to see which companies asked this question
题意: 给两个已经按从小到大排好序的整数数组, 要求将这两个数组按从小到大排序成一个新的数组.
思路:
1:若采用给新的数组重新分配内存的方法,这道题思路非常简单,这里不详述;
2:这里作者采用的是不重新分配内存的办法,以原有节点为单元,改变指针的指向,重新排序.
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { struct ListNode *pL1 = l1; struct ListNode *pL2 = l2; struct ListNode *head; //!< 指向新链表的首节点 struct ListNode *predNode; //!< 指向新链表当前的最后一个节点 if(NULL == pL1 || NULL == pL2) { return pL1 == NULL ? pL2:pL1; } //!< 判定head节点,并初始化新链表的第一个节点 if(pL1->val <= pL2->val) { head = pL1; predNode = pL1; pL1 = pL1->next; } else { head = pL2; predNode = pL2; pL2 = pL2->next; } while(1) { if( NULL==pL1 || NULL== pL2) { //!< 链表生成结束 predNode->next = (pL1==NULL) ? pL2 : pL1; return head; } //!< 判定新的节点 if(pL1->val <= pL2->val) { predNode->next = pL1; predNode = pL1; pL1 = pL1->next; } else { predNode->next = pL2; predNode = pL2; pL2 = pL2->next; } } //!< 不会执行这一步 return head; }
相关文章推荐
- entity framework 连接Mysql
- 关于Windows 10,你需要注意什么?
- 多个线程是否可以共用一个线程函数
- 怎么在同一台电脑上同时运行多个解压版tomcat服务器
- 可能会引发页面跳转的属性
- cocos2dx虚拟摇杆cpp四方向
- Oracle中,用一条Sql实现任意的行转列拼接(不是decode)
- html格式 保持原样输出的标签
- swift 如何实现点击view后显示灰色背景
- 在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇
- Linux commands
- python getopt使用
- 了解配置文件
- Swift属性
- gridview中 编辑列 要点两次才能出现编辑文本框
- 程序日志输出实现-Log4j
- gridview中 编辑列 要点两次才能出现编辑文本框
- Embedding Documents in Word 2007 by Using the Open XML SDK 2.0 for Microsoft Office
- MySQL5.7.10zip包解压配置
- viewpager一屏多个滑动效果