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

网站开发人员需要去做原型吗app手机网站模板

网站开发人员需要去做原型吗,app手机网站模板,女生做网站运营,怎么做网站推广临沂浅谈链表的优化技巧 麻烦写法: 正常写链表,都是一个头元素 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/wzjs/807242.html

相关文章:

  • 如何做自己的电影网站玉娇龙儿wordpress
  • 营销型网站建设的标准天津建设网站安管人员成绩查询
  • 网站建设三网合一是什么无锡企业网站建设报价
  • 网站建设与管理技术发展技术支持 如皋网站建设
  • 专业APP客户端做网站可以做网页的网站
  • 自己做网站都需要什么缪斯设计公司做设计师发展怎么样
  • mysql数据库建设网站app地图下载安装
  • 郑州做网站齿轮罗湖做网站报价
  • 成都市微信网站建辽源商城网站建设
  • 微网站建设86215网站建设运营协议书
  • 如何做网站推广下拉刘贺稳14湘潭新思维网站
  • 网站建设业务员怎么做中国黄页企业名录
  • 公司让我做网站负责人广州市司法职业学校
  • 模版营销型网站怎么做网站建设公司落寞
  • 北京网站设计培训班新闻资讯建站服务商
  • 深圳建网站兴田德润实惠珠海网站建设优化
  • 建设网站用什么时候开始易企秀可以做微网站吗
  • 广东网站建设微信官网开发包工头接活平台小工程
  • 怎么为网站做外链企业注册网上申请入口
  • 福州网站排名推广wordpress 关闭某个插件的更新
  • 深圳制作手机网站企业网站硬件建设方案
  • 做网站二级页面的那家网站建设公司好
  • 网站管理员的联系方式企业展厅方案设计公司
  • 企业网站源码带手机版wordpress 替换图标
  • 网站建站解决方案大型网站开发人员
  • 做一个企业的官网可以做静态网站手机网站制作哪家公司好
  • 代理平台有哪些百度快速优化软件排名
  • 邮箱登录宁波seo外包sem
  • .耐思尼克官方网站建立网站的流程是什么
  • 嘉禾手机网站建设建筑模板尺寸