一道简单的链表题,将两个升序链表合并成一个新的升序链表
创新互联是一家以重庆网站建设公司、网页设计、品牌设计、软件运维、营销推广、小程序App开发等移动开发为一体互联网公司。已累计为混凝土搅拌罐等众行业中小客户提供优质的互联网建站和软件开发服务。题目本身不难,这篇博客也不在于题这个解,单纯是因为我是一个初学C++的菜鸟,第一次写链表的时候被指针折磨,所以记录一下一些可以注意的点
相关代码
力扣中对单项链表的定义struct类
//Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
是很基本的由结点组成的单项链表,自身一个值val,指向下一个结点next
初始化新结点
ListNode* preHead = new ListNode;
ListNode* prev = preHead;
不能忘了在C++写法上ListNode* p和ListNode p的区别,在力扣提交后者会直接报错
题解放最后,用迭代比较简单
ListNode mTL(ListNode* l1, ListNode* l2)
{
if(l1 == NULL) return l2;
else if(l2 == NULL) return l1;
else if(l1->val< l2->val){
l1->next = mTL(l1->next, l2);
return l1;
}
else{
l2->next = mTL(l1->next, l2);
return l2;
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧