链接两个单向链表

来源:互联网 发布:广东毕业生就业数据 编辑:程序博客网 时间:2024/06/08 03:13
#include<iostream>
using namespace std;
struct Listnode
{
int m_data;
Listnode* m_next;
Listnode(int value, Listnode* next = NULL):m_data(value),m_next(next){}
};
class solution{
public:
Listnode* Mergelist2(Listnode* head1, Listnode* head2)
{
if (head1 == NULL)
{
return head2;
}
else if (head2==NULL)
{
return head1;
}
Listnode* Merged_head = NULL;
if (head1->m_data < head2->m_data)
{
Merged_head = head1;
head1 = head1->m_next;
}
else if (head1->m_data >head2->m_data)
{
Merged_head = head2;
head2 = head2->m_next;
}
Listnode* tempnode = Merged_head;
while (head1&&head2)
{
if (head1->m_data < head2->m_data)
{
tempnode->m_next = head1;
head1 = head1->m_next;
}
else
{
tempnode->m_next=head2;
head2 = head2->m_next;
}
tempnode = tempnode->m_next;//
}
if (head1)
{
tempnode->m_next = head1;
}
if (head2)
{
tempnode->m_next = head2;
}
return Merged_head;
}

};
int main()
{
solution s;
Listnode* list1=new Listnode(1);
Listnode* list2=new Listnode(2);
Listnode* pcur1 = list1;
Listnode* pcur2 = list2;
Listnode* result = NULL;
for (int i = 3; i <= 10; i=i + 2)
{
Listnode* tempnode = new Listnode(i);//
pcur1->m_next = tempnode;
pcur1=pcur1->m_next;
//delete tempnode;
}
for (int j = 4; j <=10; j = j + 2)
{
Listnode* tempnode = new Listnode(j);
pcur2->m_next = tempnode;//挂接
pcur2 = pcur2->m_next;//转移
//delete tempnode;
}
result=s.Mergelist2(list1, list2);
while(result)
{
cout << result->m_data<<' ';
result = result->m_next;
}
return 0;
}
原创粉丝点击