64,642
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode, *LinkList;
void CreatList_L(LinkList &L,int n);
LinkList MergeList_L(LinkList &La, LinkList Lb, LinkList Lc);
int main()
{
LinkList L1 = NULL, L2 = NULL;
LinkList p = NULL, Lc = NULL; //要用到的指针
CreatList_L(L1, 4);
CreatList_L(L2, 4);
cout<<"当前两个链表分别为:"<<endl;
p = L1->next;
while(p) //输出
{
cout<<p->data<<endl;
p = p->next;
cout<<"\n"<<endl;
}
p = L2->next;
while(p)
{
cout<<p->data<<endl;
p = p->next;
cout<<"\n"<<endl;
}
MergeList_L(L1, L2, Lc);
cout<<"修改后的链表为:"<<endl;
p = L1->next;
while(p != NULL) //输出
{
cout<<"p->data "<<endl;
p = p->next;
}
return 0;
}
void CreatList_L(LinkList &L,int n)
{
int i;
LinkList p = NULL;
cout<<"新建带有四个节点的链表,并按升序输入四个节点的值\n"<<endl;
L= (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(i = n; i >0; --i)
{
p = (LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next = L->next;
L->next = p;
}
L->next = NULL;
}
LinkList MergeList_L(LinkList &La, LinkList Lb, LinkList Lc)
{
LinkList pa, pb, pc;
pa = La->next;
pb = Lb->next;
Lc = pc = La;
while(pa && pb)
{
if(pa->data <= pb->data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
pc->next = pa ? pa : pb;
}
free(Lb);
free(pb);
return La;
}