技术标签: 2024年程序员学习 面试 学习 前端
//判断删除的是否为第一个结点
if(index == 1){
//将头结点的下一个结点作为新的头结点
Node newHead = head.next;
//改变头结点
head = newHead;
}else{
for(int i = 1; i < size; i++){
//找到删除结点位置的前一个结点
if(i == index - 1){
//temp为删除位置的前一个结点
//保存将要删除的结点
Node delNode = temp.next;
//将删除结点的前一个结点指针指向删除结点的下一个结点
temp.next = delNode.next;
//将删除结点置为空
delNode = null;
break;
}
temp = temp.next;
}
}
size–;
return true;
}catch (Exception e){
return false;
}
}
删除指定位置的结点可分为以下几步
判断位置是否合法
创建一个临时结点,赋值为链表头
判断删除的是否为第一个结点,如果删除的是第一个结点,则将头结点的下一个结点作为新的头结点;如果删除的不是第一个结点,则找到删除结点位置的前一个结点,将删除结点的前一个结点指针指向删除结点的下一个结点
结点数量自减
deleteNode()方法测试
findNode(Integer index)方法查找链表中指定位置的结点对象,并返回。findNode相对来说,比前几个方法要简单一点。先判断位置是否合法,循环找到index位置的结点即可。
代码实现
/**
查找链表中指定位置的结点,并返回
@param index 指定位置
@return 该位置的结点对象
*/
public Node findNode(Integer index){
try{
//判断位置是否合法
if(index < 1 || index > size){
System.out.println(“插入位置不合法!”);
return null;
}
//创建一个临时结点,赋值为链表头
Node temp = head;
for(int i = 1; i <= size; i++){
//temp即当前位置的结点,找到index位置即返回该结点
if(index == i){
return temp;
}
temp = temp.next;
}
return null;
}catch (Exception e){
return null;
}
}
findNode()方法测试
updateNode(Integer index, Object data)方法修改指定位置结点的元素值,利用上面的findNode(index)方法找到指定位置的结点对象,修改此对象的元素值即可。
代码实现
/**
修改指定位置结点的元素值
@param index 指定位置
@param data 修改的元素值
@return Boolean
*/
public Boolean updateNode(Integer index, Object data){
try{
//根据findNode(Integer index)方法查找到index位置的结点
Node node = findNode(index);
//修改元素值
node.data = data;
return true;
}catch (Exception e){
return false;
}
}
updateNode()方法测试
以上就是单链表的一些常用方法。写的比较零散,下面是上述案例完整代码。有错误地方欢迎指出。
public class LinkList {
//定义一个内部类,作为链表的结点
public class Node{
public Object data; //链表数据
public Node next; //链表指针,指向下一个结点
public Node() {
}
public Node(Object data) {
this.data = data;
}
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
}
//定义链表的头指针
public Node head;
//结点数量
public Integer size;
//构造函数
public LinkList() {
this.head = null;
this.size = 0;
}
//返回结点的数量
public Integer getSize(){
return size;
}
//链表是否为空
public Boolean isEmpty(){
return size == 0;
}
/**
添加结点,添加在链表尾
@param data 添加的元素值
@return 返回Boolean
*/
public Boolean addLast(Object data){
try {
//实例一个新结点,添加的结点
Node newNode = new Node(data);
//创建一个临时结点,赋值为链表头
Node temp = head;
//如果链表为空,则把新结点插入到链表头
if(size == 0){
head = newNode;
}else{
//如果链表不为空,则找到链表尾结点
while(temp.next != null){
//获取下一个结点
temp = temp.next;
}
//将尾结点指针指向新结点,添加结点
temp.next = newNode;
}
//结点数量自增
size++;
return true;
}catch (Exception e){
return false;
}
}
/**
添加结点,在链表头
@param data 添加结点的元素值
@return Boolean
*/
public Boolean add(Object data){
try{
//实例一个新结点,添加的结点
Node newNode = new Node(data);
//新结点的指针指向原链表头结点
newNode.next = head;
//改变头结点
head = newNode;
//结点数量自增
size++;
return true;
}catch (Exception e){
return false;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。
资料整理不易,点个关注再走吧
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
师笔试题
[外链图片转存中…(img-eplC3FOB-1712282296410)]
资料整理不易,点个关注再走吧
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数