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

循环双链表,将L改造为L=(a1,a3,…,an,a4,a2)

题目:设以带头结点的双向循环链表表示的线性表L=(a1,a2,…..,an).试写出一时间复杂度为o(n)的算法,将L改造为L=(a1,a3,…,an,a4,a2)

思想:将偶数头插到表尾,奇数顺序保持不变。

代码:

void change(DListNode &L){
	//q指向循环双链表的最后一个结点 
	DListNoode *p=L->next,*q=L->pre,*r;
	int i=1;
	while(p!=q){
		if(i%2==0){
			r=p;
			p=p->next;
			r->pre->next=r->next;
			r->next->pre=r->pre;
			//将偶数头插到后面
			r->pre=q;
			q->next->pre=r;
			r->next=q->next;
			q->next=r; 
			
		}else{
			p=p->next;
		} 
		i++;
	} 
} 

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


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

相关文章:

  • 排查PHP服务器CPU占用率高的问题
  • UE5之5.4 第一人称示例代码阅读2 子弹发射逻辑
  • ARM学习(33)英飞凌(infineon)PSOC 6 板子学习
  • COSCon'24 志愿者招募令:共创开源新生活!
  • 人工智能:未来生活与工作的变革力量
  • 全面解析文档对象模型(DOM)及其操作(DOM的概念与结构、操作DOM节点、描述DOM树的形成过程、用DOMParser解析字符串为DOM对象)
  • 【Linux】实现一个简易的shell命令行
  • Vue3+ts+vite自动导入vue的依赖
  • 应用案例 | Panorama SCADA助力巴黎奥运会:保障赛事协调与安全
  • 【STM32 Blue Pill编程实例】-OLED显示BME280传感器数据
  • HTTP介绍及请求过程
  • 深度学习中的注意力机制:从基础到应用
  • Redis学习文档
  • BigFoot (Simplified Configuration)
  • 设计模式:策略模式
  • 智能合约开发工具Remix
  • 【SQL基础:语法、分类与DDL操作全解析】
  • 【进阶OpenCV】 (21) --卷积神经网络实现人脸检测
  • 【Web.路由]——路由原理
  • 在 Linux 上保护 SSH 服务器连接的15种措施
  • 【rCore OS 开源操作系统】Rust 宏
  • [Linux网络编程]04-多进程/多线程并发服务器思路分析及实现(进程,信号,socket,线程...)
  • C# 委托简述
  • ifconfig 和 ip addr
  • jmeter中csv data set config的Sharing mode和loop控制器结合使用
  • 重修设计模式-行为型-访问者模式