#include
<
stdio.h
>
#include < stdlib.h >
#define N 10
typedef struct student
{
int num;
float score;
struct student * next;
}STU;
STU * create()
{
int i;
STU * p, * head = NULL, * tail = head;
for (i = 0 ;i < N;i ++ )
{
p = (STU * )malloc( sizeof (STU));
scanf( " %d%f " , & p -> num, & p -> score);
p -> next = NULL;
if (p -> num < 0 )
{
free(p);
break ;
}
if (head == NULL)
head = p;
else
tail -> next = p;
tail = p;
}
return head;
}
void output(STU * p)
{
while (p != NULL)
{
printf( " %d\t%.2f\n " ,p -> num,p -> score);
p = p -> next;
}
}
STU * link(STU * p1,STU * p2)
{
STU * p, * head;
if (p1 -> num < p2 -> num)
{
head = p = p1;
p1 = p1 -> next;
}
else
{
head = p = p2;
p2 = p2 -> next;
}
while (p1 != NULL && p2 != NULL)
{
if (p1 -> num < p2 -> num)
{
p -> next = p1;
p = p1;
p1 = p1 -> next;
}
else
{
p -> next = p2;
p = p2;
p2 = p2 -> next;
}
}
if (p1 != NULL)
p -> next = p1;
else
p -> next = p2;
return head;
}
int main( int argc, char * argv[])
{
STU * a, * b, * c;
printf( " \n请输入链表a的信息,学号小于零时结束输入:格式(学号 成绩)\n " );
a = create();
printf( " \n请输入链表b的信息,学号小于零时结束输入:格式(学号 成绩)\n " );
b = create();
printf( " \n链表a的信息为:\n " );
output(a);
printf( " \n链表b的信息为:\n " );
output(b);
c = link(a,b);
printf( " \n合并后的链表信息为:\n " );
output(c);
return 0 ;
}
#include < stdlib.h >
#define N 10
typedef struct student
{
int num;
float score;
struct student * next;
}STU;
STU * create()
{
int i;
STU * p, * head = NULL, * tail = head;
for (i = 0 ;i < N;i ++ )
{
p = (STU * )malloc( sizeof (STU));
scanf( " %d%f " , & p -> num, & p -> score);
p -> next = NULL;
if (p -> num < 0 )
{
free(p);
break ;
}
if (head == NULL)
head = p;
else
tail -> next = p;
tail = p;
}
return head;
}
void output(STU * p)
{
while (p != NULL)
{
printf( " %d\t%.2f\n " ,p -> num,p -> score);
p = p -> next;
}
}
STU * link(STU * p1,STU * p2)
{
STU * p, * head;
if (p1 -> num < p2 -> num)
{
head = p = p1;
p1 = p1 -> next;
}
else
{
head = p = p2;
p2 = p2 -> next;
}
while (p1 != NULL && p2 != NULL)
{
if (p1 -> num < p2 -> num)
{
p -> next = p1;
p = p1;
p1 = p1 -> next;
}
else
{
p -> next = p2;
p = p2;
p2 = p2 -> next;
}
}
if (p1 != NULL)
p -> next = p1;
else
p -> next = p2;
return head;
}
int main( int argc, char * argv[])
{
STU * a, * b, * c;
printf( " \n请输入链表a的信息,学号小于零时结束输入:格式(学号 成绩)\n " );
a = create();
printf( " \n请输入链表b的信息,学号小于零时结束输入:格式(学号 成绩)\n " );
b = create();
printf( " \n链表a的信息为:\n " );
output(a);
printf( " \n链表b的信息为:\n " );
output(b);
c = link(a,b);
printf( " \n合并后的链表信息为:\n " );
output(c);
return 0 ;
}