链表的合并

来源:百度知道 编辑:UC知道 时间:2024/06/03 04:48:11
设计要求
(1)建立两个链表A和B,链表元素个数分别为m和n个。
(2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个链表C,使得:
当m>=n时,C=x1,y1,x2,y2,…xn,yn,…,xm
当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn
输出链表C
(3)用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。
(4)测试数据:
① A表(30,41,15,12,56,80)
B表(23,56,78,23,12,33,79,90,55)
② A表(30,41,15,12,56,80,23,12,34)
B表(23,56,78,23,12)
只求呢用的源程序
这位仁兄说的是什么啊 ~~~

#include "stdio.h"
struct student
{

int number;
int score;
struct student *next;
struct student *before; /*由于要排序,所以要建立双向链表 */
}*Head_A,*Rear_A,*Head_B,*Rear_B,*p,*p1;

void main()
{
int i,j,Length_A,Length_B,Length_Z;
printf("此程序是把a,b两个链表合并并按学号升序排列.\n");
printf("a,b两个链表中的结点包括学号、成绩。\n");
printf("先分别输入两个链表的长度.\n");

printf("请输入a链表的长度:"); /*输入链表a*/
scanf("%d",&Length_A);

printf("请输入a链表结点中的学号和成绩\n");
printf(" 学号 成绩\n");
for(i=1;i<=Length_A;i++)
{
p=(struct student*)malloc(sizeof(struct student));
printf("请输入第%d个同学的学号和成绩:",i);
scanf("%d%d",&p->number,&p->score);
p->next=NULL;
if(i==1) {Head_A=p;Rear_A=p;p->before=NULL;}
else {p->before=Rear_A;Rear_A->next=p;Rear_A=p;}
}