第1个回答 2012-04-09
给你一个量表合并待排序的
你自己将其中一个链表改成#include<stdio.h>
#include<stdlib.h>
typedef struct lnote
{
int data;
struct lnote* next;
}LNode,*LinkList;
LinkList Get_LinkList()
{
LinkList L=NULL;
LNode *s,*r=NULL;
s=(LNode*)malloc(sizeof(LNode));
s->data=0;
s->next=NULL;
L=s;
r=s;
int x;
scanf("%d",&x);
while(x!=-1)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
if(r!=NULL)
r->next=NULL;
return L;
}
void PrintList(LinkList L)
{
LNode *f=L->next;printf("\tH");
while(1)
{
printf("-->%d",f->data);
if(f->next!=NULL)
f=f->next;
else
break;
}
printf("\n");
}
LinkList Combine_List(LinkList A,LinkList B)
{
LinkList C=NULL;
LNode *s,*a=A->next,*b=B->next;
s=(LNode*)malloc(sizeof(LNode));
s->data=0;
s->next=NULL;
C=s;
LNode*c=C;
while(a&&b)
{
s=(LNode*)malloc(sizeof(LNode));
if(a->data<b->data){s->data=a->data;a=a->next;}
else {s->data=b->data;b=b->next;}
s->next=c->next;//即为空
c->next=s;
c=s;
}
if(a==NULL)a=b;//a不空
while(a)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=a->data;
a=a->next;
s->next=c->next;//即为空
c->next=s;
c=s;
}
return C;
}
void main()
{
LinkList L,L0,C;
printf("请输入升序链表1(输入'-1'结束):\n");
L=Get_LinkList();
printf("链表1:\n");
PrintList(L);
printf("请按顺序输入升序链表2(输入'-1'结束):\n");
L0=Get_LinkList();
printf("链表2:\n");
PrintList(L0);
C=Combine_List(L,L0);
printf("合并后的链表为:\n");
PrintList(C);
}结点就行了本回答被提问者采纳