实现两个链表的合并 实训(1)

本文介绍如何使用C语言实现两个链表的合并,并通过冒泡排序法进行升序排序。首先,创建两个链表A和B,然后合并成线性表C,当A的元素数量大于等于B时,C=(x1,y1,x2,y2,...,xn,yn,...,xm),反之则C=(y1,x1,y2,x2,...,ym,xm,...,yn)。接着,对C进行冒泡排序得到升序排列的链表D。最后,分别输出A、B、C、D四个链表的内容。" 52742285,5597018,Xiper的奇妙历险:解决七七四十九皇后问题,"['搜索', '算法训练', '字符串处理']
摘要由CSDN通过智能技术生成

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)

         {

                  

                  

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值