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

网站顶部flash下载陕西省建设厅网站查询

网站顶部flash下载,陕西省建设厅网站查询,网站已经开发怎样用微信实现手机网站开发,wordpress更换主题 小工具目录 一、链表的概念 二、链表的实现 2.1 链表的构建 2.2 从链表头部添加元素 2.3 从链表尾部添加元素 2.4 链表任意位置添加元素 2.5 常规方法实现 2.6 获取指定位置的元素 2.7 获取指定元素的位置 2.8 修改链表中某一节点 2.9 删除链表的头结点 2.10 删除链表的尾…目录 一、链表的概念 二、链表的实现 2.1 链表的构建 2.2 从链表头部添加元素 2.3 从链表尾部添加元素 2.4 链表任意位置添加元素 2.5 常规方法实现 2.6 获取指定位置的元素 2.7 获取指定元素的位置 2.8 修改链表中某一节点 2.9 删除链表的头结点 2.10 删除链表的尾节点 2.11 删除任意位置节点 三、力扣刷题 LCR 136. 删除链表的节点 链表进阶 备注本篇文章的代码是基于Java实现 一、链表的概念 该部分主要对链表进行简单的介绍通过简洁易懂的语言带大家快速认识链表 链表和数组是数据结构中最为常用的两种存储结构链表是如同链条一般的指针来连接元素链表的特点是插入和删除数据十分方便但查找和读取数据 与数组相比 则较为低效。 链表与数组之间的差异 内容链表数组存储连续性逻辑连续物理不连续逻辑、物理都连续添加数据O(1)O(N)删除数据O(1)O(N)查询数据O(N)O(1)修改数据O(N)O(1) 我们可以发现一条链表是由许多个节点构成节点中存储数据并存储下一个节点的引用(指针) 二、链表的实现 该部分将通过Java语言模拟链表的底层实现 2.1 链表的构建 2.1.1 首先创建节点对象 public class ListNode {public int val; //当前节点的值public ListNode next; //下一个节点的引用public ListNode() {}public ListNode(int val) {this.val val;}public ListNode(int val, ListNode next) {this.val val;this.next next;}} 2.1.2 创建链表的异常处理对象在链表的操作过程中我们要考虑对异常进行处理 public class LinkedListException extends RuntimeException{public LinkedListException(String message){super(message);} } 2.1.3 创建接口定义链表要实现的方法 2.1.4 构建链表并实现接口 public class MyLinkedList {private ListNode head; //头指针private ListNode tail; //尾指针private int size; //链表容量} 2.2 从链表头部添加元素 接口 //头部添加void addFirst(int val); 实现类addFirst Overridepublic void addFirst(int val) {//创建一个新节点ListNode newNode new ListNode(val);//如果链表为空,则头指针和尾指针都指向新节点if (head null) {head newNode;tail newNode;} else {//链表不为空,则新节点指向原来链表的头节点,并更新头指针指向新节点newNode.next head;head newNode;}//每次添加一个新节点,原链表长度加1size;} 测试 为了方便打印输出结果大家也可以和上图一样重写toString方法 Overridepublic String toString() {StringBuilder sb new StringBuilder();sb.append([);ListNode curr head;while (curr ! null) {sb.append(curr.val).append(,);curr curr.next;}if (size 0) sb.deleteCharAt(sb.length() - 1);sb.append(]);return sb.toString();} 2.3 从链表尾部添加元素 接口 //尾部添加void addLast(int val); 实现类addLast Overridepublic void addLast(int val) {ListNode newNode new ListNode(val);//链表为空,则头指针指向新节点if (head null) {head newNode;} else {//链表不为空,需要从头节点一直找到最后一个指向空的节点,再将新节点连接到表尾ListNode curr head;while (curr.next!null) curr curr.next;curr.next newNode;}size;} 测试 2.4 链表任意位置添加元素 接口 /*** 任意位置添加* param index 插入的位置* param val 插入的元素*/void add(int index, int val); 实现类add Overridepublic void add(int index, int val) {//入参判断if (index 0 || index size) throw new LinkedListException(链表索引越界异常);//创建新节点ListNode newNode new ListNode(val);//头部添加if (index 0) {addFirst(val);return;}//尾部添加if (index size) {addLast(val);return;}//找到要插入位置的前一个节点ListNode curr head;for (int i 0; i index - 1; i) {curr curr.next;}newNode.next curr.next;curr.next newNode;size;} 测试 2.5 常规方法实现 判断链表是否为空isEmpty、获取链表长度size、获取链表头节点getFirst、获取链表尾节点getLast 接口(这几个方法的实现都较为简单这里我一起进行演示) //判断链表是否为空boolean isEmpty();//获取链表长度int size();//获取头节点的值int getFirst();//获取尾节点的值int getLast(); 实现类 //判断链表是否为空Overridepublic boolean isEmpty() {return size 0;}//获取链表长度Overridepublic int size() {return size;}//获取头节点的值Overridepublic int getFirst() {//这里链表为空要进行异常处理if (isEmpty()) throw new LinkedListException(链表为空);return head.val;}//获取尾节点的值Overridepublic int getLast() {if (isEmpty()) throw new LinkedListException(链表为空);ListNode curr head;while (curr.next ! null) curr curr.next;//O(N)return curr.val;} 测试 2.6 获取指定位置的元素 接口 //获取任意位置节点的值int get(int index); 实现类 Overridepublic int get(int index) {//判断索引是否合法if (index 0 || index size) throw new LinkedListException(索引越界异);//直接返回头节点if (index 0) {return getFirst();}//直接返回为节点if (index size - 1) {return getLast();}//遍历ListNode curr head;for (int i 0; i index; i) {curr curr.next;}return curr.val;} 测试 2.7 获取指定元素的位置 接口 /*** 通过值找索引* param val 要查找的元素* return 返回该元素的位置*/int indexOf(int val); 实现类 Overridepublic int indexOf(int val) {//若链表为空直接返回-1if (isEmpty()) return -1;ListNode curr head;int index 0;while (curr ! null) {//如果找到 直接返回索引if (curr.val val) {return index;}curr curr.next;index;}//未找到 返回-1return -1;} 测试 2.8 修改链表中某一节点 接口 /*** 修改元素* param index 旧元素的位置* param val 新元素的值*/void set(int index, int val); 实现类 Overridepublic void set(int index, int val) {//链表为空 无法修改if (isEmpty()) throw new LinkedListException(链表为空);//判断索引是否合法if (index 0 || index size) throw new LinkedListException(索引越界);ListNode curr head;for (int i 0; i index; i) {curr curr.next;}curr.val val;} 测试 2.9 删除链表的头结点 接口 //删除头节点void removeFirst(); 实现类 Overridepublic void removeFirst() {//链表为空要进行异常处理if (isEmpty()) throw new LinkedListException(链表为空);ListNode next head.next;head.next null;head next;size--;} 测试 2.10 删除链表的尾节点 接口 //删除尾节点void removeLast();实现类 Overridepublic void removeLast() {if (isEmpty()) throw new LinkedListException(链表为空异常删除失败);if (size1){headnull;size--;return;}ListNode pre head;for (int i 0; i size -2; i) {pre pre.next;}ListNode target pre.next;ListNode next target.next;pre.next next;target.next null;size--;} 测试 2.11 删除任意位置节点 接口 //删除任意位置节点void remove(int index); 实现类 Overridepublic void remove(int index) {if (isEmpty()) throw new LinkedListException(链表为空);if (index 0 || index size) throw new LinkedListException(索引越界);if (index 0) {removeFirst();return;}ListNode pre head;for (int i 0; i index - 1; i) {pre pre.next;}ListNode target pre.next;ListNode next target.next;pre.next next;target.next null;size--;} 测试 三、力扣刷题 LCR 136. 删除链表的节点 大家可以尝试下这道题目 LCR 136. 删除链表的节点 - 力扣LeetCode 链表进阶 【快慢指针】突破环形链表-CSDN博客 关于代码的优化或大家有更好的思路 欢迎在评论区分享你的观点 完结撒花  博主WXg2279605572   欢迎大家与我交流
文章转载自:
http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn
http://www.morning.rwfj.cn.gov.cn.rwfj.cn
http://www.morning.nfzw.cn.gov.cn.nfzw.cn
http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn
http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn
http://www.morning.qpzjh.cn.gov.cn.qpzjh.cn
http://www.morning.cwyrp.cn.gov.cn.cwyrp.cn
http://www.morning.dpbdq.cn.gov.cn.dpbdq.cn
http://www.morning.xirfr.cn.gov.cn.xirfr.cn
http://www.morning.sgfpn.cn.gov.cn.sgfpn.cn
http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn
http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn
http://www.morning.sknbb.cn.gov.cn.sknbb.cn
http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn
http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn
http://www.morning.fbqr.cn.gov.cn.fbqr.cn
http://www.morning.xqxrm.cn.gov.cn.xqxrm.cn
http://www.morning.yrfxb.cn.gov.cn.yrfxb.cn
http://www.morning.hbxnb.cn.gov.cn.hbxnb.cn
http://www.morning.yrsg.cn.gov.cn.yrsg.cn
http://www.morning.cbnxq.cn.gov.cn.cbnxq.cn
http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn
http://www.morning.lhgqc.cn.gov.cn.lhgqc.cn
http://www.morning.znqxt.cn.gov.cn.znqxt.cn
http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn
http://www.morning.rfrx.cn.gov.cn.rfrx.cn
http://www.morning.lwmxk.cn.gov.cn.lwmxk.cn
http://www.morning.jftl.cn.gov.cn.jftl.cn
http://www.morning.hmdn.cn.gov.cn.hmdn.cn
http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn
http://www.morning.plqqn.cn.gov.cn.plqqn.cn
http://www.morning.gjlst.cn.gov.cn.gjlst.cn
http://www.morning.smxrx.cn.gov.cn.smxrx.cn
http://www.morning.lynb.cn.gov.cn.lynb.cn
http://www.morning.tscsd.cn.gov.cn.tscsd.cn
http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn
http://www.morning.hotlads.com.gov.cn.hotlads.com
http://www.morning.rfpxq.cn.gov.cn.rfpxq.cn
http://www.morning.qwfq.cn.gov.cn.qwfq.cn
http://www.morning.klcdt.cn.gov.cn.klcdt.cn
http://www.morning.xwgbr.cn.gov.cn.xwgbr.cn
http://www.morning.syqtt.cn.gov.cn.syqtt.cn
http://www.morning.tkxr.cn.gov.cn.tkxr.cn
http://www.morning.whnps.cn.gov.cn.whnps.cn
http://www.morning.hdscx.cn.gov.cn.hdscx.cn
http://www.morning.qieistand.com.gov.cn.qieistand.com
http://www.morning.psdbf.cn.gov.cn.psdbf.cn
http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn
http://www.morning.ppzgr.cn.gov.cn.ppzgr.cn
http://www.morning.wxckm.cn.gov.cn.wxckm.cn
http://www.morning.mfsjn.cn.gov.cn.mfsjn.cn
http://www.morning.qxwwg.cn.gov.cn.qxwwg.cn
http://www.morning.kgrwh.cn.gov.cn.kgrwh.cn
http://www.morning.gfkb.cn.gov.cn.gfkb.cn
http://www.morning.btnmj.cn.gov.cn.btnmj.cn
http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn
http://www.morning.xckdn.cn.gov.cn.xckdn.cn
http://www.morning.brqjs.cn.gov.cn.brqjs.cn
http://www.morning.kztts.cn.gov.cn.kztts.cn
http://www.morning.qkrz.cn.gov.cn.qkrz.cn
http://www.morning.tldhq.cn.gov.cn.tldhq.cn
http://www.morning.rgtp.cn.gov.cn.rgtp.cn
http://www.morning.tqhpt.cn.gov.cn.tqhpt.cn
http://www.morning.svrud.cn.gov.cn.svrud.cn
http://www.morning.jmlgk.cn.gov.cn.jmlgk.cn
http://www.morning.gbpanel.com.gov.cn.gbpanel.com
http://www.morning.wkmpx.cn.gov.cn.wkmpx.cn
http://www.morning.bpmnx.cn.gov.cn.bpmnx.cn
http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn
http://www.morning.rmxk.cn.gov.cn.rmxk.cn
http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn
http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn
http://www.morning.rmltt.cn.gov.cn.rmltt.cn
http://www.morning.xnfg.cn.gov.cn.xnfg.cn
http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn
http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn
http://www.morning.neletea.com.gov.cn.neletea.com
http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn
http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn
http://www.morning.spfq.cn.gov.cn.spfq.cn
http://www.tj-hxxt.cn/news/237979.html

相关文章:

  • 经典手机网站新型建筑模板价格多少
  • 网站还在建设中网站建设所用程序
  • 西数网站管理助手南昌网站seo费用
  • 移动网站开发书籍全球新冠疫苗接种率
  • 网站为什么要做seo下载手机app免费安装
  • 有什么做美食的网站个人做网站模版是否有人买
  • 广州网站开发网络公司云南网站建设肖庆华
  • 推广营销海外网站长江设计公司
  • 成都企业网站开发百度统计app下载
  • 网站搭建学什么专业汝州网站建设汝州
  • 台北网站建设emlog做企业网站
  • 东莞阳光网官方网站登录九江做网站开发需要多少钱
  • 淘宝返利网站怎么做wordpress数据多
  • 网站后台下载器网页设计教程下载
  • 站酷网官网网址蔬菜基地做网站合适吗
  • 怎么做公司的官方网站百度账号登录不了
  • 广州 网站开发 公司电话信誉好的广州做网站
  • 网站栏目页 优化整站优化关键词排名
  • 家庭宽带 做网站wordpress怎么备份数据库结构
  • 怎样制作做实景的网站河北软文搜索引擎推广公司
  • 影楼网站推广dw做了网站还可以做淘宝详情吗
  • 网站改版中 模板湖北网站建设多少钱
  • 代练中介网站有得做吗泰安个人代做网站
  • 网站新闻不收录推广软文代发
  • 网站被降权恢复做电商网站需要的证
  • 注册建设网站的公司网站模板定做
  • flash xml网站微信系统开发技术
  • 网站维护是什么职业网站设计软件开发
  • 北京清控人居建设集团网站想用wordpress建立网站
  • 网站广告位怎么做如何做微网站平台