[剑指Offer]25-合并两个排序链表
题目链接
题意
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
一个个把节点合并过去。
注意鲁棒性。
相关知识
关于保证鲁棒性:
- 写的时候考虑空指针等情况,做“防御性编程”。
- 写完再复查一遍。
- (写前)想几个测试用例,写完检查。
代码
/*struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(!pHead){
return nullptr;
}
if(!pHead->next){
return pHead;
}
ListNode* pCurrent;
ListNode* pBefore;
ListNode* pBehind;
pCurrent=pHead;
while(pCurrent->next){
if(pCurrent==pHead){
pBefore=nullptr;
}
//更新当前节点
pBehind=pCurrent->next;
pCurrent->next=pBefore;
//初始化下一个节点
pBefore=pCurrent;
pCurrent=pBehind;
}
pCurrent->next=pBefore;
return pCurrent;
}
};
posted on 2019-03-08 12:00 coding_gaga 阅读(105) 评论(0) 编辑 收藏 举报