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

备考国央企-算法笔记-01链表

1、链表

解题三板斧

  • 假头:作用主要是避免关于空链表的判断与讨论,还可以用来避免检查前驱结点为空的情况
  • 新链表:解决在旧链表中进行原地的交换、插入、删除,把复杂的操作变成在新链表中头部插入或者尾部添加
  • 双指针:主要用于寻找链表中的特定结点,双指针的走法可以一次一步可以有快有慢,出发点也可以有前有后

假头

假头,通常也叫做Dummy Head 或者 “哑头”,是在链表前面,加上一个额外的节点

链表的基本操作

  1. 初始化
  2. 追加节点
  3. 头部插入节点
  4. 查找结点
  5. 插入指定位置之前
  6. 删除节点

初始化

//初始化
//初始化dummy
private ListNode dummy = new ListNode();//初始化链表tail指针
private ListNode tail = dummy;//初始化链表长度
private int length = 0;

追加节点

public void addAtTail(int val){/*将值为val的节点追加到链表尾部*///尾部添加一个新节点tail.next = new ListNode(val);//移动tail指针tail = tail.next;//链表长度+1length++;
}

头部插入新节点

//创建新节点
private ListNode p = new ListNode();
//p指向第一个节点,p为第一个节点
p.next = dummy.next;
//dummy指向第一个节点p
dummy.next = p;
length++;

查找结点

private ListNode getPrevNode(int index){
/*返回index节点的前驱节点*/
//初始化front与back,分别一前一后ListNode front = dummy.next;ListNode back = dummy;//在查找的时候front与back总是一起走for(int i = 0;i < index && front != null; i++){back = front;front = front.next;}//把back作为prev并返回return back;
}
public int get(int index){//获取链表中第index个节点的值。如果索引无效则返回-1if(index < 0 || index >=length){return -1;}//因为getPrevNode总是返回有效的节点,所以可以直接取值。return getPrevNode(index).next.val;
}

插入指定位置之前

private void insertNode(int index, ListNode p){if(index > length)return -1;
//index<0则直接插入到头节点位置if(index < 0){p.next = dummy.<
http://www.dtcms.com/a/337606.html

相关文章:

  • HakcMyVM-Friendly
  • MongoDB Windows 系统实战手册:从配置到数据处理入门
  • Esp32基础(③旋转编码器)
  • 用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
  • 上海1KM人口热力数据分享
  • 音频分类模型笔记
  • rust 从入门到精通之变量和常量
  • 杂记 04
  • 脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像
  • python的课外学习生活活动系统
  • 视觉语言导航(13)——AIR-VLN 4.3
  • Mysql核心框架知识
  • 学习雪花算法
  • 冒泡排序——简单理解和使用
  • NVIDIA 技术沙龙探秘:聚焦 Physical AI 专场前沿技术
  • Handler以及AsyncTask知识点详解
  • 数据结构部分算法记录
  • Oracle维护指南
  • 计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
  • RPM数据库损坏修复:DB_RUNRECOVERY: Fatal error, run database recovery
  • 新能源知识库(78)微网控制器与储能LCU对比
  • 【opencv-Python学习日记(7):图像平滑处理】
  • 普通用户使用docker命令
  • 「数据获取」《中国经济普查年鉴》(2004、2008、2013、2018、2023)(获取方式看绑定的资源)
  • Centos7 使用lamp架构部署wordpress
  • Django开发Web应用
  • Vitis 2023下调用math.h(log)函数提示未定义的解决办法
  • HT6875_2.8W 防削顶单声道D 类音频功率放大器
  • CoRL 2025|隐空间扩散世界模型LaDi-WM大幅提升机器人操作策略的成功率和跨场景泛化能力
  • vue3 el-table-column 列头添加 图标按钮