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

循环链表(判断双循环链表是否为对称,将两个单循环链表合并成一个循环链表)

一、判断带头节点的双循环链表是否为对称链表

思想:设置两个指针,一个从头开始,一个从后开始遍历,两个指针相等,或者其中一个指针的下一个节点为另外一个节点时结束遍历。如果数据相同,则往后遍历。否则不是对称链表。

代码:

bool symmetry(LinkList L){
	DNode *p=L->next,*q=p->prior;//两个移动指针 
	while(p!=q&&p->next!=q){//终止条件 
		if(p->data==q->data){//相等,则继续往后遍历 
			p=p->next;
			q=q->next;
		}else{//不是对称链表 
			return false;
		}
	} //是对称链表 
	return true;
}

时间复杂度O(n);空间复杂度O(1)

二、两个循环单链表,链表头指针分别指向h1和h2,编写一个函数将链表h2链接到链表h1之后,要求链接后的链表任保持循环链表形式。

思想:找到两个链表的尾指针,将第一个链表的尾指针与第二个链表的头指针链接起来,使其成为循环。

代码:

LinkList merge(LinkList &h1,LinkList h2){
	LNode *p,*q;
	p=h1;
	while(p->next!=h1){//找h1表尾 
		p=p->next;
	}
	q=h2;
	while(q->next!=h2){//找h2表尾 
		q=q->next;
	}
	p->next=h2;//将h2链接到h1之后 
	q->next=h1;//h2的尾节点指向h1 
	retuen h1;
} 

时间复杂度O(n);空间复杂度O(1)


http://www.kler.cn/news/304904.html

相关文章:

  • ​Web3与AI的交汇点:打造未来智能化去中心化应用
  • React学习笔记(1.0)
  • SQLServer事务
  • QT::QComboBox自定义左击事件信号
  • 使用豆包MarsCode编程助手提升开发效率的实战分享!
  • 算法-最少箭引爆气球(贪心+区间)
  • oracle停止当前运行的JOB或kill会话
  • Python图像处理——计算机视觉中常用的图像预处理
  • Conda新建虚拟环境,安装包一直失败:000和404错误
  • RabbitMQ 基础入门
  • 【python爬虫】之scrapy框架介绍
  • yolo自动化项目实例解析(一)日志格式输出、并发异步多线程、websocket、循环截图、yolo推理、3d寻路
  • 一天认识一个硬件之光纤
  • flink中chainWith() 的详解
  • 【Prompt Engineering:自我一致性、生成知识提示、链式提示】
  • Qt之OpenCv 灰度处理、均值滤波、边缘检测学习
  • 端口大全说明,HTTP,TCP,UDP常见端口对照表
  • Go语言现代web开发07 map字典
  • Eclipse 悬浮提示:提高编程效率的利器
  • Android NDK工具
  • BFS迷宫最小路径问题
  • 【人工智能】OpenAI发布GPT-o1模型:推理能力的革命性突破,这将再次刷新编程领域的格局!
  • 二叉树(上)
  • 定时中断键盘灯闪烁
  • P2865 [USACO06NOV] Roadblocks G
  • C#使用TCP-S7协议读写西门子PLC(五)-测试程序
  • 【玩转贪心算法专题】452. 用最少数量的箭引爆气球是【中等】
  • Java中重写和重载
  • c++ 编辑器 和 编译器 的详细解释
  • Ubuntu20-xrdp与Windows-mstsc远程桌面连接