链表合并问题~

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:51:15
struct node
{int a;
int b;
struct node *next;
};
创建两条链,头指针为head1,head2,链上的结点按a的值升序排列,编写一个
函数process_list()实现根据head1,head2指向的2个链表生成一个新链表(
头指针为newhead).新生成的链表按a值升序排列,生成新链表的规则:当在
head1,head2链中发现a值相同的结点时,则在newhead链表中增加一个新结点,
新结点的b值取为两链表的2个结点的b值之和,新结点的a值取head1或head2链
表中对应结点的a的值.

我的程序 刚好是这个!看看 还能用不!!!
#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,