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

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.kler.cn/a/299164.html

相关文章:

  • web自动化测试知识总结
  • 算法笔记—前缀和(动态规划)
  • 系统思考—战略共识
  • Linux应用软件编程-文件操作(标准io)
  • 6.3.1 MR实战:计算总分与平均分
  • Python 爬取网页文字并保存为 txt 文件教程
  • 各类软件在Linux上的安装
  • 多人开发小程序设置体验版的痛点
  • Vue知识点笔记(持续更新)
  • 使用 `readResolve` 防止序列化破坏单例模式
  • 【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态
  • 系统工程建模MBSE
  • 【STM32 Blue Pill编程】-定时器计数模式
  • 网络编程(学习)2024.9.5
  • WINDOWS下0-1编译ESP-AT
  • JAVA今日分享-30道常见的Java+MyBatis面试题
  • SQLite 与 Java 的集成
  • 鼠标点击来动态确定 HSV 范围
  • QT Creater实现国庆节主题项目【0基础完成版】
  • 算法工程师重生之第三天( 链表理论基础 移除链表元素 设计链表 反转链表 )
  • 【PostgreSQL教程】PostgreSQL 高级篇之子查询
  • Linux——redis主从复制、集群模式、哨兵模式
  • 漫谈设计模式 [10]:享元模式
  • 机器学习和深度学习的区别是什么?
  • 插槽slot
  • Linux环境常用的一些网络相关的命令