1、实现两个链表的合并
【基本功能要求】
(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进行升序排序,生成表C,并输出表A、B、C、D。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct data
{
intnum;
structdata * next;
}Data, *pData;
pData bubbldsort(pData C)
{
if(NULL==C->next)
{
printf("C表为空,请返还输入\n");
returnNULL;
}
pDatamiddle;
pDatap;
pDataD;
pDatap1;
middle= (pData)malloc(sizeof(Data)); //建立D链表;
middle->num= C->num;
middle->next= NULL;
D= middle;
p= middle;
middle= NULL;
p1= C->next;
while(NULL!=p1)
{
middle= (pData)malloc(sizeof(Data));
middle->num= p1->num;
middle->next= NULL;
p->next= middle;
p= middle;
middle= NULL;
p1= p1->next;
}
intnum;
for(middle=D->next; NULL!=middle->next; middle=middle->next)
{