问题描述:

已知两个链表A和B分别表示两个集合,其元素递增排列。编制函数,求A与B 的交集,并存放于A链表中。

问题解答:

算法思想:釆用归并的思想,设置两个工作指针pa和pb,对两个链表进行归并扫描,只有同时出现在两集合中的元素才链接到结果表中且仅保留一个,其他的结点全部释放。当一个链表遍历完毕后,释放另一个表中剩下的全部结点。

LinkList Union(LinkList &la,LinkList &lb) {

pa=la->next; //设工作指针分别为pa和pb

pb=lb->next;

pc=la; //结果表中当前合并结点的前驱指针

while(pa&&pb){

if(pa->data==pb->data) { //交集并入结果表中

pc->next=pa; //A中结点链接到结果表

pc=pa;

pa=pa->next;

u=pb; //B中结点释放

pb=pb->next;

free(u);

}

else if (pa->datadata) { //若A中当前结点值小于B中当前结点值

u=pa;

pa=pa->next; //后移指针

free(u) ; //释放A中当前结点

}else{ //若B中当前结点值小于A中当前结点值

u=pb;

pb=pb->next; //后移指针

free (u) ; //释放B中当前结点

}

} //while 结束

while(pa){ //B已遍历完,A未完

u=pa;

pa=pa->next;

free (u) ; //释放A中剩余结点

}

while(pb){ //A已遍历完,B未完

u=pb;

pb=pb->next;

free(u) ; //释放B中剩余结点

}

pc->next=NULL; //置结果链表尾指针为NULL

free (lb) ; //释放B表的头结点

return la;

}

链表归并类型的题在各学校历年真题中出现的频率很高,故应扎实掌握此类问题的思想。该算法的时间复杂度为O(len1+len2),空间复杂度为O(1)。

C语言编程集合A和B的交集,求两个递增链表A和B的交集,并将结果放在链表A中相关推荐

  1. C语言实验(十三):函数(求两个任意分数和的最简形式、将正整数转换为字符串输出、某日期是该年第几天)

    C语言实验(十三):函数(求两个任意分数和的最简形式.将正整数转换为字符串输出) 一.任意输入两个分数,用C语言编程求这两个分数和的最简形式.如:输入为"2/6 + 12/9 =" ...

  2. C语言试题七十三之请编写函数求两个数的最大公约数

    1. 题目 编写函数:求两个数的最大公约数. 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数.几个自然数公有的约数,叫做这几个自然数的公约数.公约数中最大的一个公约数,称为这几个自 ...

  3. C语言(CED)编写一个程序,求两个字符之间的加减运算。

    (请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419 复习C语言,不同的心境遇到了不同的问题: 问题: 编写一 ...

  4. C语言编程练习:用pow()函数实现求x的y次方的值

    C语言 pow() 函数用来求 x 的 y 次方的值. 头文件:math.h 语法/原型: double pow(double x,double y); 参数说明: x:双精度数. y:双精度数. 返 ...

  5. C语言编程对一个逆波兰式进行求值,算式与逆波兰式

    致憨憨的从前 当年,老师布置一道作业:编写一个计算器,要求输入算式,给出结果.算式中只包含+-*/^这几个运算符,算式中不含负数.由于是Python课程,我很快给出了解题方式,如下: while Tr ...

  6. C 语言编程 — 变量和常量

    目录 文章目录 目录 前文列表 变量与常量 变量 变量的类型 变量的声明 变量的定义 变量的初始化与赋值 常量 整型常量 浮点型常量 字符型场景 字符串常量 符号常量 前文列表 <程序编译流程与 ...

  7. java兔子问题流程图_C语言编程狼追兔子问题代码解析

    原标题:C语言编程狼追兔子问题代码解析 问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一 ...

  8. c语言编程作业最大整数问题,C语言编程第六章作业答案.doc

    C语言编程第六章作业答案 1. 输入两个正整数m和n,求其最大公约数和最小公倍数. 辗除法--辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法. ...

  9. c语言数组判断不及格人数,C语言编程 运用数组求不及格人数

    C语言编程题,求数组89,80,95,84,73,84,91,78,87,94的和以及平均值 #includevoid main(){ int a[10]={89,80,95,84,73,84,91, ...

最新文章

  1. Windows组策略屏蔽U盘有妙法
  2. 杭电2055 另一种
  3. RSA公钥文件(PEM)解析
  4. 2-SAT 问题(洛谷-P4782)
  5. 16软件1班安卓第二学期学习总结
  6. php中的list()用法中要注意的地方
  7. opencart出现no such file or dictionary
  8. js-JavaScript常见的创建对象的几种方式
  9. find命令使用及实例
  10. 生产制造MES系统源码 采购管理模块解析
  11. JPEG压缩原理详解
  12. 收图啦!CDEC 2019 北京站 高颜值亮相~~~
  13. html5统计在线人数,html的统计访客人数的代码?
  14. Proteus中继电器详解
  15. node内存溢出:JavaScript heap out of memory
  16. Memcache教程
  17. 12、可观测性--告警处理
  18. 短视频底层实操课,让你迅速从短视频新手变成高手
  19. NLP从入门到实战(三)
  20. PMP 项目管理知识框架 - 引子

热门文章

  1. 如何正确拟订网络推广投资?
  2. 计算机哪所民办学校好,哪所民办高校计算机软件方面好?
  3. 两个外企常用的电面网站
  4. 设计模式——结构型模式
  5. FinClip11月产品更新:FIDE 插件开发功能优化;开发者文档英文版上线
  6. 系统注册表方式修改背景颜色
  7. win10内置Ubuntu安装图形界面
  8. 重庆邮电大学计算机2019湖北分数线,重庆邮电大学2019年各省各批次录取分数线...
  9. wp8手机用得真憋屈
  10. 应聘/求职----北京IT公司红黑榜TOP100