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

做网站设计电脑买什么高端本好青岛网站建设eoeeoe

做网站设计电脑买什么高端本好,青岛网站建设eoeeoe,赣州搜赢网络科技有限公司,网站备案会检查空间浅谈链表的优化技巧 麻烦写法: 正常写链表,都是一个头元素 head 一个尾元素 tail 来记录链表的虚拟头和虚拟尾或真实头和真实尾。 但是显然在插入操作和删除操作的时候,这种写法就会显得很麻烦,要特判一大堆情况: …

浅谈链表的优化技巧

麻烦写法:

正常写链表,都是一个头元素 head 一个尾元素 tail 来记录链表的虚拟头和虚拟尾或真实头和真实尾。

但是显然在插入操作和删除操作的时候,这种写法就会显得很麻烦,要特判一大堆情况:

  • 插入的元素在链表头:更新 head 且只要更新两条关系链。
  • 在中间:最正常,没话说,需更新四条关系链:pre → \rightarrow cur & cur → \rightarrow pre & cur → \rightarrow nxt & nxt → \rightarrow pre。
  • 在末尾:更新 tail 且只要更新两条。

给个代码:

	void Insert(int i,char ch){++tot;node[tot].ch=ch;if(!h)h=t=tot;else{if(!i){node[tot].nxt=h,node[h].pre=tot;h=tot;}else{int x=Find(i),y=node[x].nxt;node[tot].pre=x;node[tot].nxt=y;if(!y)t=tot;elsenode[y].pre=tot;node[x].nxt=tot;}}++m;return;}void del(int i){if(m==1)h=t=0;else{if(i==1){h=node[h].nxt;node[h].pre=0;}else{if(i==m){t=node[t].pre;node[t].nxt=0;}else{int x=Find(i);int l=node[x].pre,r=node[x].nxt;node[r].pre=l;node[l].nxt=r;}}}--m;return;}

看着就很头疼啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。。。

怎么说。。细节太多了,不好搞。码量大,还容易炸。

优化方法:

为链表添加虚拟的头尾元素。使得真正的链表只在虚拟头之后、虚拟尾之前。

  • 初始化时添加,所以链表至少有两个元素
  • 操作时不会涉及到虚拟元素,所以可以避免操作链表头尾

怎么样,看着就挺 nice 的。

操作事项:

  • 虚拟头的后面就是真正头
  • 虚拟尾的后面就是真正尾
  • 虚拟头的靠后元素为虚拟尾时,实际链表为空链表

别急——此时还能优化!

有种链表叫做环形链表,即 node[tail].nxt=headnode[head].pre=tail

那么我们就不用用两个虚拟元素,用一个虚拟元素将链表连成环形

  • 只需要一个虚拟元素,环形链表没有链表头和链表尾
  • 操作时不会涉及到虚拟元素,所以链表不可能是空链表
  • 虚拟元素的靠后元素就是真实头
  • 虚拟元素的考前元素就是实际尾
  • 虚拟元素的靠后元素为自己时,实际链表为空

好处呢?

通常用下标为 0 0 0 的元素作为虚拟元素(造福了数组模拟链表党)

  • 空指针也用 0 0 0 表示
  • 可以访问下标为 0 0 0 的元素,但是不能访问空指针

这时候懒得打代码怎么办?

Copy 一下老师的代码

void Insert(int i, char c) {      // 第 i 个字符后插入 ce[++n] = {c};                   // 新插入的元素int x = Find(i), y = e[x].nxt;  // 找到插入位置 xe[n].prv = x, e[n].nxt = y;     // 新元素 n 与两边建立联系e[y].prv = e[x].nxt = n;++m;
}void Delete(int i) {int x = Find(i), l = e[x].prv, r = e[x].nxt;e[r].prv = l, e[l].nxt = r;m--;
}

是不是瞬间清洗许多?

撒花~~

http://www.dtcms.com/a/508759.html

相关文章:

  • 网站页面制作西安广告公司联系方式
  • VS2022+DirectX9坐标系与基本图元之基本图元(BasePrimitive)_0302
  • 网站建设实训总结及体会网站开发与电子商务
  • 为什么MainWindow.xaml绑定的datacontext,EtherCATSuiteCtrl.xaml直接用了?
  • 建设企业网站综合考虑网页打不开用什么浏览器
  • 网站建设需要掌握什么知识网络营销工具的使用
  • 贪心算法深度解析:从理论到实战的完整指南
  • 基于Langchain的实践(电商客服)
  • 百度首页排名优化公司沈阳网站搜索引擎优化
  • 旅游网站建设初衷新网站应该怎么做
  • 网站做短信验证需要多少钱衡水学校网站建设
  • (立控信息LKONE)智能仓储管理,高效・安全・精准,一 “智” 到位
  • 内存管理C++
  • 建网站算法企业网站设计规范
  • 建设部网站官网 施工许可wordpress可以装多少会员数据库
  • DeepCFD+:一种工业级 CFD 代理模型训练框架【深度学习+流体力学】
  • 设计师服务平台鱼巴士医疗网站优化公司
  • 网站页面设计需要遵循的六大原则wordpress 图片链接
  • 网站网页设计培训机构浙江住房和城乡建设厅网站
  • ElectrumX介绍
  • miniAPP图片上传等api触发项目onhide等周期函数问题
  • 广州专业网站网络营销学院
  • 网站友链怎么做大鹏新网站建设
  • AI智能体:企业级智能体管理解决方案
  • 温州网站开发培训滨海网站建设公司
  • 网站建设吉金手指排名12恶意点击别人的网站
  • git note
  • 国外炫酷网站大连网站开发建
  • BugKu Web渗透之 文件包含
  • 时间序列数据异常检测算法(1)——传统统计学基础算法