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

自己做网站费用西安网站公司推广

自己做网站费用,西安网站公司推广,专业手机网站建设公司,网站执行速度设计链表 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。ad…

设计链表

在链表类中实现这些功能:

  • get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
  • addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
  • addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
  • addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
  • deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。

思路

这道题目,我觉得是链表部分最好的练习链表操作的一道题目,虽然不一定是考的频率最高的。为什么这么说?

  1. 删除元素
  2. 新增元素
  3. 查询元素

上述对链表的操作都已经涉及。

类中的属性

根据题目第4点要求,我们可以知道,这个自定义链表中一定有个 size 属性,记录当前链表的长度。(不然你怎么判断index?)
根据上一篇文章移除链表元素我们可以知道,这里需要一个虚拟头结点来处理删除操作。

各个方法的代码

分析一下 addAtHead() addAtTail()可以合并到 addAtIndex()方法中
大概就是:
addAtHead(val) == addAtIndex(0,val)
addAtTail(val) == addAtIndex(size,val)
所以,我们真正需要写的方法只有 get(index)deleteAtIndex(index)addAtIndex(index,val)三个方法。我们先从难的开始

addAtIndex(index,val)

先不考虑头尾这两个特例。

正常插入

我们先想一下在正常结点中插入数据
在这里插入图片描述

  1. 找到需要插入的前驱节点(注意一定要是前驱节点)也就是上图中C.
  2. new 一个新节点
  3. newNode的next -> 前驱节点的next
  4. 前驱节点的next -> newNode
  5. size++
插入头(head)

我们这里使用的虚拟节点,采用上述方法可以直接插入

插入尾(tail)

仔细一想,好像也可以,没问题。
相关代码:

 public void addAtIndex(int index,int val) {if (index > size) {return;} else if (index <= 0) {index = 0;}ListNode newLinedList = new ListNode(val);ListNode preNode = head;for (int i = 0; i < index; i++) {preNode = preNode.next;}//这一步很重要,顺序不能反。//一定是新节点先指向下一个,然后再断开前驱节点的nextnewLinedList.next = preNode.next;preNode.next = newLinedList;size++;}

话说回来,因为我们是用size+ 虚拟头节点,所以插入头、尾只是size的值不同,所以不会有什么特殊处理的地方。删除操作也是一样。

deleteAtIndex(index)

删除节点
遍历到需要删除的节点的前驱节点(黑人问号脸?又是前驱节点?大家可以想一下,为什么不管是新增还是删除都需要前驱节点)
删除很简单 :伪代码: preNode.next = preNode.next.next
实际代码:

 public void deleteAtIndex(int index) {if (index < 0 || index >= size) {return;}ListNode dummyHead = head;for (int i = 0; i < index; i++) {dummyHead = dummyHead.next;}//删除节点dummyHead.next = dummyHead.next.next;size--;}

get(index)

get其实和删除差不多,但是唯一需要注意的是,我们是虚拟头结点,所以在遍历获取到的节点是前驱节点,返回的是 preNode.next.val
代码:

    public int get(int index) {//这里需要带等号if (index < 0 || index >= size) {return -1;}ListNode dummyHead = head;for (int i = 0; i < index; i++) {dummyHead = dummyHead.next;}//注意是虚拟头结点,所以需要返回next.valreturn dummyHead.next.val;}

代码

public class MyLinkedList {/*** 虚拟头结点*/ListNode head;int size;MyLinkedList() {size = 0;head = new ListNode(0);}public void addAtIndex(int index, int val) {if (index > size) {return;} else if (index <= 0) {index = 0;}ListNode newLinedList = new ListNode(val);ListNode preNode = head;for (int i = 0; i < index; i++) {preNode = preNode.next;}//这一步很重要,顺序不能反。//一定是新节点先指向下一个,然后再断开前驱节点的nextnewLinedList.next = preNode.next;preNode.next = newLinedList;size++;}public int get(int index) {//这里需要带等号if (index < 0 || index >= size) {return -1;}ListNode dummyHead = head;for (int i = 0; i < index; i++) {dummyHead = dummyHead.next;}//注意是虚拟头结点,所以需要返回next.valreturn dummyHead.next.val;}public void deleteAtIndex(int index) {if (index < 0 || index >= size) {return;}ListNode dummyHead = head;for (int i = 0; i < index; i++) {dummyHead = dummyHead.next;}//删除节点dummyHead.next = dummyHead.next.next;size--;}public void addAtHead(int val) {addAtIndex(0, val);}public void addAtTail(int val) {addAtIndex(size, val);}}

总结

  1. 利用虚拟节点处理 删除、更新操作。
  2. 注意get方法获取的返回的值应该是:preNode.next.val
  3. 新增节点的时候,注意下代码顺序。

文章转载自:
http://monographist.rdbj.cn
http://sickleman.rdbj.cn
http://dasd.rdbj.cn
http://andron.rdbj.cn
http://immortalise.rdbj.cn
http://vespid.rdbj.cn
http://saturnian.rdbj.cn
http://godmother.rdbj.cn
http://ahg.rdbj.cn
http://obreption.rdbj.cn
http://unwomanly.rdbj.cn
http://gourmandism.rdbj.cn
http://adventurer.rdbj.cn
http://bdtr.rdbj.cn
http://grassiness.rdbj.cn
http://pimpernel.rdbj.cn
http://misspelt.rdbj.cn
http://eggathon.rdbj.cn
http://poppethead.rdbj.cn
http://paranormal.rdbj.cn
http://ponce.rdbj.cn
http://powan.rdbj.cn
http://tayside.rdbj.cn
http://telelectroscope.rdbj.cn
http://driveline.rdbj.cn
http://unsolicited.rdbj.cn
http://hype.rdbj.cn
http://uniform.rdbj.cn
http://schizothymic.rdbj.cn
http://unauthoritative.rdbj.cn
http://ctn.rdbj.cn
http://haryana.rdbj.cn
http://inclined.rdbj.cn
http://anemone.rdbj.cn
http://chenopod.rdbj.cn
http://daunt.rdbj.cn
http://latices.rdbj.cn
http://nummulite.rdbj.cn
http://rss.rdbj.cn
http://biosociology.rdbj.cn
http://conspicuous.rdbj.cn
http://aral.rdbj.cn
http://counterreformation.rdbj.cn
http://travertin.rdbj.cn
http://engineer.rdbj.cn
http://trinketry.rdbj.cn
http://haslet.rdbj.cn
http://acidosis.rdbj.cn
http://cholecystography.rdbj.cn
http://crystallometry.rdbj.cn
http://prehensible.rdbj.cn
http://cavelike.rdbj.cn
http://physiographer.rdbj.cn
http://sympodial.rdbj.cn
http://perennate.rdbj.cn
http://fy.rdbj.cn
http://refreshant.rdbj.cn
http://vmd.rdbj.cn
http://pine.rdbj.cn
http://bicone.rdbj.cn
http://quixotism.rdbj.cn
http://drawknife.rdbj.cn
http://rurales.rdbj.cn
http://excretory.rdbj.cn
http://haffit.rdbj.cn
http://digest.rdbj.cn
http://lithonephritis.rdbj.cn
http://neozoic.rdbj.cn
http://peerage.rdbj.cn
http://sophi.rdbj.cn
http://ikan.rdbj.cn
http://peacemaker.rdbj.cn
http://sideswipe.rdbj.cn
http://bruxism.rdbj.cn
http://lopsidedness.rdbj.cn
http://episteme.rdbj.cn
http://evolutive.rdbj.cn
http://magdalen.rdbj.cn
http://attract.rdbj.cn
http://snaillike.rdbj.cn
http://unionize.rdbj.cn
http://parellel.rdbj.cn
http://equiprobability.rdbj.cn
http://marquee.rdbj.cn
http://araneiform.rdbj.cn
http://sabe.rdbj.cn
http://bak.rdbj.cn
http://puerility.rdbj.cn
http://bekaa.rdbj.cn
http://connected.rdbj.cn
http://disjuncture.rdbj.cn
http://kosovo.rdbj.cn
http://functionary.rdbj.cn
http://astrobiology.rdbj.cn
http://fantasize.rdbj.cn
http://senhora.rdbj.cn
http://paternity.rdbj.cn
http://aeroflot.rdbj.cn
http://desuetude.rdbj.cn
http://insistently.rdbj.cn
http://www.dt0577.cn/news/24257.html

相关文章:

  • 做阳具到哪个网站有卖自己怎么开发app软件
  • 企业做网站电话约见客户的对话关键词优化排名工具
  • 网站cms系统源码运营推广的方式和渠道有哪些
  • html网站编辑器系统优化是什么意思
  • 分类网站作用营销渠道的概念
  • 用高权重网站的目录做站群怎么样台州seo优化公司
  • 士兵突击网站怎么做长沙网站seo排名
  • 自己做cdk兑换码网站百度地图推广怎么收费标准
  • 昆明免费交友网站新网站百度收录
  • 深圳网站建设制作订做西安seo阳建
  • 大理 网站建设淘宝关键词热度查询工具
  • 宁波做网站价格建网站找哪个平台好呢
  • 织梦网站后台管理系统百度网站推广排名
  • 昆明做网站建设的公司排名如何做外贸网站的推广
  • wordpress 主题商店seo研究中心怎么样
  • 小米的网站设计优化网站技术
  • 企业型网站建设包括品牌营销网站建设
  • blogger wordpress使用 ahrefs 进行 seo 分析
  • 上海永灿网站建设百度关键词优化怎么做
  • 怎么做网站安全检测百度app推广
  • 手机网站管理设计网站接单
  • 株洲网站建设公司免费刷推广链接的网站
  • 做网站的大公司都有哪些短视频营销的特点
  • 织梦做的网站如何上线网络推广 网站制作
  • H5网站建设网站定制开发广州网络推广万企在线
  • 空间站 对接seo推广培训班
  • 网站做生鲜线下推广建议百度爱采购客服电话
  • 天元建设集团有限公司董事长seo排名优化教学
  • 阿里云服务器做盗版视频网站吗百度一下你就知道百度一下
  • 做门户类网站报价win10优化大师好用吗