当前位置: 首页 > news >正文

A表和B表公共元素产生链表C

设A和B是两个单链表(带头节点),其中元素递增有序。设计一个算法从A到B的公共元素产的C表(交集),要求不破坏A,B的节点。

思想:依次比较A,B表中的元素,相同时,尾插法插入到表中。若不等,将较小的指针后移,知道其中一个链表遍历到表尾。

代码:

LinkList Get_Come(LinkList A,LinkList B){LNode *p=A->next,*q=B->next;//p表示表A子表,q表示表B子表 LinkList C =(LinkList)malloc(sizeof(LNode));LNode *r=C,*s;while(p!=NULL && q!=NULL){//子表均有子表 if(p->data==q->data){//相同元素时,利用尾巴插法插入到C表中 s=(LNode*)malloc(sizeof(LNode));s->data=q->data;r->next=s;r=s;//向后遍历 p=p->next;q=q->next;}else if(p->data<q->data){//A表中的数据更小时,因表是递增有序,所以将A表往后遍历 p=p->next; }else{q=q->next; //B表中的数据更小时,因表是递增有序,所以将B表往后遍历 }} r->next=NULL;//表C的表尾置空 return C;
} 

时间复杂度O(m+n);空间复杂度O(min(m,n)

http://www.lryc.cn/news/434637.html

相关文章:

  • Rust运算符
  • Oracle rman 没有0级时1级备份和0级大小一样,可以用来做恢复 resetlogs后也可以
  • idea中配置Translation插件完成翻译功能
  • 如何看待:低代码开发平台的兴起无需经验?
  • OpenCV-轮廓检测
  • vue页面使用自定义字体
  • C++——list常见函数的使用和模拟实现(2)
  • C 标准库 - `<float.h>`
  • 【机器人工具箱Robotics Toolbox开发笔记(二)】Matlab中机器人工具箱的下载与安装
  • ROS2 Nav2 - Smac 规划器
  • LabVIEW环境中等待FPGA模块初始化完成
  • 手机TF卡格式化后数据恢复:方法、挑战与预防措施
  • ceph对象存储使用的一些思考
  • 单词排序C++实现
  • 828华为云征文 | Flexus X 实例服务器网络性能深度评测
  • STL —heap算法源码刨析 make_heap、push_heap、pop_heap、sort_heap操作分析
  • 走进低代码表单开发(一):可视化表单数据源设计
  • 简单好用的OCR API
  • c++的拷贝构造函数和赋值函数
  • 什么自动猫砂盆才适合旅游党?4个选购技巧统统告诉你!
  • 算法知识点————双指针【删除重复元素】【反转链表】
  • 建造者模式builder
  • IEC103设备数据 转 IEC61850项目案例
  • 438.找到字符串中所有字母异位词
  • Microsoft SC-100: Microsoft 网络安全架构师
  • 代码随想录训练营day42|188.买卖股票的最佳时机IV,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费
  • 解决Pynput不能在Ubuntu22.04上正常使用问题
  • IPV4端口数据有哪些?
  • 【爱加密_云平台-注册/登录安全分析报告】
  • Open CASCADE学习|按圆离散旋转体