目录
前言
本人刷剑指offer的一些程序记录,头文件,主函数都齐全,可直接上机运行
一、题目
输⼊两个单调递增的
链表
,输出两个
链表
合成后的链表,当然我们需要合成后的链表满⾜单调不减规则。
二、程序
1.头文件
#include <iostream>
using namespace std;
typedef struct LineList
{
int data;
LineList *next;
}*ListN;
2.类和主函数
class solution
{
public:
void Merge(ListN La,ListN Lb,ListN &Lc)
{
ListN pa,pb,pc;
pa=La->next;
pb=Lb->next;
Lc=pc=La;
while(pa&&pb)
{
if(pa->data > pb->data)
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
else
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
}
pc->next=pa?pa:pb;
}
void InitNode(ListN &L)
{
int n,val;
ListN q,p;
L=new LineList;
p=L;
p->next=NULL;
cout<<"输入要初始化链表的长度"<<endl;
cin>>n;
cout<<"输入链表的数据"<<endl;
for(int i=1;i<=n;i++)
{
q=new LineList;
cin>>q->data;
p->next=q;
p=q;
}
p->next=NULL;
}
};
int main()
{
solution stu;
ListN La,Lb,Lc,q;
stu.InitNode(La);
stu.InitNode(Lb);
stu.Merge(La,Lb,Lc);
q=Lc->next;
while(q)
{
cout<<q->data<<" ";
q=q->next;
}
}