70,037
社区成员
发帖
与我相关
我的任务
分享
//看看这个,运行环境:vc6
#define OK 1
#define NULL 0
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCRENENT 10
typedef int ElemType;
typedef int status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode ,*LinkList;
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void Creat_List(LinkList &L,int n)
{
LinkList p;
L=(LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(int i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
}
void MergeLList_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);
}
void Print(LinkList p)
{
while(p!=NULL)
{
printf("%3d",p->data);
p=p->next;
}
}
void main()
{
printf("*************************\n");
printf("数值之间用Enter隔离开\n");
printf("*************************\n");
int n,m;
LinkList La,Lb,Lc,p;
printf("\n请La输入线形表的初始长度:");
scanf("%d",&n);
printf("请输入各个元素:\n");
Creat_List(La,n);
printf("La链表的初始化后为:\n");
p=La->next;
Print(p);
printf("\n请Lb输入线形表的初始长度:");
scanf("%d",&m);
printf("请输入各个元素:\n");
Creat_List(Lb,m);
printf("Lb链表的初始化后为:\n");
p=Lb->next;
Print(p);
printf("\n");
printf("La,Lb链表合并成Lc链表后的元素为:\n");
MergeLList_L(La,Lb,Lc);
p=Lc->next;
Print(p);
printf("\n");
}
//这个是C++的,我10楼贴的是C的
#include<iostream.h>
#define ELEM size_t
class link
{
public:
ELEM element;
link *next;
link(const ELEM &elemval,link*nextval=NULL)
{
element=elemval;
next=nextval;
}
link(link *nextval=NULL)
{
next=nextval;
}
~link()
{
};
};
link *creat()
{
link *head,*tail,*s;
head=new link;
tail=head;
int x;
cin>>x;
while(x!=0)
{
s=new link(x);
tail->next=s;
tail=s;
cin>>x;
}
return head;
}
void printlist(link *lp)
{
lp=lp->next;
while(lp!=NULL)
{
cout<<lp->element<<" ";
lp=lp->next;
}
cout<<endl;
}
link *comb(link *L1,link *L2)
{
link *pa=L1->next;
link *pb=L2->next;
link *q,*r=L1;
while (pa!=NULL&&pb!=NULL)
{
if(pa->element<pb->element)
{r->next=pa;
r=pa;
pa=pa->next;
}
else if(pa->element==pb->element)
{
r->next=pa;
r=pa;
pa=pa->next;
pb=pb->next;
}
else
{
r->next=pb;
r=pb;
pb=pb->next;
}
}
if (pa!=NULL)
q=pa;
else
q=pb;
r->next=q;
return L1;
}
void main()
{
cout<<"----当输入为0时,链表输入完毕!----"<<endl;
link *la,*lb,*lc;
la=creat();
lb=creat();
cout<<"la: ";
printlist(la);
cout<<"lb: " ;
printlist(lb);
lc=comb(la,lb);
cout<<"lc(合并后的表): ";
printlist(lc);
}