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.
Example:
Input: 1->2->4, 1->3->4
首先介绍一下C++中的结构。对于一个结构来说,
struct MyStruct {
int member_a;
};
如果有个变量MyStruct s,那么使用其中的成员元素时可以用
s.member_a = 1;
如果采用指针方法访问,比如MyStruct * ps,那么同样的访问必须用箭头号:
ps->member_a = 1;
::只用在类成员函数和类成员变量中。比如,声明一个类:
class CA {
public:
int ca_var;
int add(int a, int b);
int add(int a);
};
那么在实现这个函数时,必须这样书写:
int CA::add(int a, int b)
{
return a + b;
}
另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示,比如:
int CA::add(int a)
{
return a + ::ca_var;
}
表示当前类实例中的变量ca_var。
c++中当定义类对象是指针对象时候,就需要用到->指向类中的成员;当定义一般对象时候时就需要用到"."指向类中的成员.......
例如:
class A
{
public
play();
}
如果定义如下:
A *p则:p->play()使用; 左边是结构指针。
A p 则:p.paly()使用; 左边是结构变量。
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
/**
* 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) {
ListNode head(1); //ListNode(int x) : val(x), next(NULL){}定义一个只有头结点的List
ListNode *temp=&head;
while(l1&&l2)
{
if(l1->val < l2->val)
{
temp->next=l1;
l1=l1->next;
}
else
{
temp->next=l2;
l2=l2->next;
}
temp=temp->next;
}
if(l1)
temp->next=l1;
if(l2)
temp->next=l2;
return head.next;
}
};
首先介绍一下C++中的结构。对于一个结构来说,
struct MyStruct {
int member_a;
};
如果有个变量MyStruct s,那么使用其中的成员元素时可以用
s.member_a = 1;
如果采用指针方法访问,比如MyStruct * ps,那么同样的访问必须用箭头号:
ps->member_a = 1;
::只用在类成员函数和类成员变量中。比如,声明一个类:
class CA {
public:
int ca_var;
int add(int a, int b);
int add(int a);
};
那么在实现这个函数时,必须这样书写:
int CA::add(int a, int b)
{
return a + b;
}
另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示,比如:
int CA::add(int a)
{
return a + ::ca_var;
}
表示当前类实例中的变量ca_var。
c++中当定义类对象是指针对象时候,就需要用到->指向类中的成员;当定义一般对象时候时就需要用到"."指向类中的成员.......
例如:
class A
{
public
play();
}
如果定义如下:
A *p则:p->play()使用; 左边是结构指针。
A p 则:p.paly()使用; 左边是结构变量。
方法二:递归
/**
* 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;
if(l1->val <l2->val)
{
l1->next=mergeTwoLists(l1->next,l2);
return l1;
}
else
{
l2->next=mergeTwoLists(l1,l2->next);
return l2;
}
}
};