【java-数据结构13-双向链表的增删查改1】

  在上一篇文章中,我们已将双向链表成功创建,接下来,我们将对链表进行增删查改,敬请期待叭~(觉得小编写的还可以的可以可以留个关注~)

(1.遍历链表

思路:定义一个cur,让cur等于head,一直往后走即可,循环条件为cur!=null

代码如下

  public void display(){ListNode cur = head;while (cur != null) {System.out.print(cur.val+" ");cur = cur.next;}System.out.println();}

调用测试

 public static void main(String[] args) {MyLinkedList myLinkedList = new MyLinkedList();myLinkedList.display();}

运行截图 

    

 

2.得到链表长度

只需在上面的基础上定义一个计数器每走一次,count++即可

代码如下

 public int size(){ListNode cur = head;int count = 0;while (cur != null) {count++;cur = cur.next;}return count;}

调用测试

public static void main(String[] args) {MyLinkedList myLinkedList = new MyLinkedList();System.out.println(myLinkedList.size());}

运行截图 

3.判断是否包含关键字key

定义一个cur,让cur等于head,加一个判断条件即可

代码如下

 public boolean contains(int key){ListNode cur = head;while (cur != null) {if(cur.val == key) {return true;}cur = cur.next;}return false;}

调用测试

 public static void main(String[] args) {MyLinkedList myLinkedList = new MyLinkedList();System.out.println(myLinkedList.contains(10));}

运行截图 

4.头插法

 这里我们先定义一个 node节点,如图

接下来就是改节点,和具体代码

 然而,只是这样,我们还忘记了一个重要细节,如果head为空,那么node就是整个链表的头,也是整个链表的尾,如图

代码如下

public void addFirst(int data){ListNode node = new ListNode(data);if(head == null) {head = node;last = node;}else {node.next = head;head.prev = node;head = node;}}

调用测试

public static void main(String[] args) {MyLinkedList myLinkedList = new MyLinkedList();myLinkedList.addFirst(56);myLinkedList.addFirst(45);myLinkedList.addFirst(34);myLinkedList.addFirst(23);myLinkedList.addFirst(12);myLinkedList.display();}

运行测试

5,尾插法

 与头插法一样,还是定义node节点,在进行插入,当然也不要忘记head为空的情况,如图

代码如下

 public void addLast(int data){ListNode node = new ListNode(data);if(head == null) {head = node;last = node;}else {last.next = node;node.prev = last;last = last.next;}}

调用测试

 public static void main(String[] args) {MyLinkedList myLinkedList = new MyLinkedList();myLinkedList.addFirst(56);myLinkedList.addFirst(45);myLinkedList.addFirst(34);myLinkedList.addFirst(23);myLinkedList.addFirst(12);myLinkedList.addLast(67);myLinkedList.display();}

运行截图 

   虽然今天的方法有点多,但是我i相信大家,经过单向链表的学习,大家对双向链表也一定能够举一反三,其实方法都大差不差,那么明天我们将继续对双向链表进行增删查改,谢谢观看~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697502.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Xshell工具连接ubuntu-方便快捷

使用Xshell连接ubuntu 在命令行输入 “sudo apt-get install openssh-server”安装openssh-server 开启 ssh-server,在命令行输入 “service ssh start”,然后输入密码即可

自动攻丝机进出料激光检测 进料出料失败报警循环手动及关闭报警退出无限循环

/**************进料检测********************/ /***缺料无限次循环 手动退出 超时报警*******/ void check_Pon() // { zstatus0; //报警计数器归零 Signauto1; …

使用ffmpeg将本地摄像头推流至RTSP服务器,支持RTSP和RTMP协议

一、流媒体传输协议:RTSP和RTMP 1、RTSP和RTMP的工作原理 1.1)RTSP工作原理 用户设备向视频流平台发送RTSP请求。视频流平台返回可操作的请求列表,如播放、暂停等。用户设备发送具体的请求,如播放。视频流平台解析请求并启动相…

git仓库使用

git仓库是会限制空间大小限制的 git网络库的容量限制_github仓库大小限制-CSDN博客 git是用于管理github的工具 电脑左下角搜索git打开GitBash.exe 进入到要下载到本地的目录 下载到本地的文件不要更改! 如果要使用请务必把文件复制到别的空间去再在这个别的空间…

数据库笔记-【视图】

视图 视图通俗是企业想展示给用户看的,数据库存储的数据有很多,但是也有很多是不能对外公开的,做项目的过程就通过视图这个媒介达到这种效果 视图也可以保证数据库表结构字段的隐私安全等 create or replace view stu_v_1 as select id st…

虚拟机有线已连接但无法上网—·可能性之一

背景 VMware虚拟机,搭建了三台Linux服务器,组成Hadoop集群,由于在Hadoop102上有一些经常与Mysql数据库交互的任务,需要经常打开运行,而Hadoop103和104则经常处于关闭状态,一段时间后再次启动集群时候&…

使用Dockerfile配置Springboot应用服务发布Docker镜像-16

创建Docker镜像 springboot-docker模块 这个应用可以随便找一个即可&#xff0c;这里不做详细描述了。 pom.xml 依赖版本可参考 springbootSeries 模块中pom.xml文件中的版本定义 <dependencies><dependency><groupId>com.alibaba.cloud</groupId>…

AI智能体|我把Kimi接入了个人微信

大家好&#xff0c;我是无界生长。 最近加入AI学习交流群的小伙伴越来越多&#xff0c;我打算在微信群接入一个聊天机器人&#xff0c;让它协助管理微信群&#xff0c;同时也帮忙给群友解答一些问题。普通的群聊机器人肯定是不能满足需求的&#xff0c;得上AI大模型&#xff0c…

HFSS学习-day5-边界条件

边界条件 概述边界条件类型1、理想导体边界条件&#xff08;Perfect E&#xff09;2、理想磁边界条件&#xff08;Perfect H&#xff09;3、有限导体边界条件&#xff08;Finite Conductivity&#xff09;4、辐射边界条件&#xff08;Radiation&#xff09;5、对称边界条件&…

Java入门基础学习笔记22——程序流程控制

程序流程控制&#xff1a;控制程序的执行顺序。 程序有哪些执行顺序&#xff1f; 顺序、分支和循环。 分支结构&#xff1a; if、switch 循环&#xff1a; for、while、do-while 顺序结构是程序中最简单最基本的流程控制&#xff0c;没有特定的语法结构&#xff0c;按照代码…

Django开发实战之定制管理后台界面及知识梳理(下)

接上一篇&#xff1a;Django开发实战之定制管理后台界面及知识梳理&#xff08;中&#xff09; 1、前台设置 1、隐藏路由 当你输入一个错误地址时&#xff0c;可以看到这样的报错&#xff1a; 从这样的报错中&#xff0c;我们可以看到&#xff0c;这个报错页面暴漏了路由&a…

用Transformers实现简单的大模型文本生成

根据输入的prompt&#xff0c;生成一段指定长度的文字。Llama跑起来太慢了&#xff0c;这里用GPT-2作为列子。 from transformers import GPT2LMHeadModel, GPT2Tokenizer import torchtokenizer GPT2Tokenizer.from_pretrained("gpt2") model GPT2LMHeadModel.fr…