news 2026/4/22 9:12:54

LinkedList链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LinkedList链表

一.简介

物理上不一定连续,逻辑上连续

分类(共8种):单向,双向,带头,不带头,循环,非循环

二.模拟实现

MyLinkedList类

package LinkedList; //无头单向不循环 public class MyLinkedList { class ListNode{ public int val; public ListNode next; public ListNode(int val) { this.val = val; } } public ListNode head;//链表头结点 //遍历打印 public void display(){ ListNode cur=head; while(cur!=null){ System.out.print(cur.val+" "); cur=cur.next; } System.out.println(); } public int size(){ int cnt=0; ListNode cur=head; while(cur!=null){ cnt++; cur=cur.next; } return cnt; } //头插 public void addFirst(int val){ ListNode node=new ListNode(val); //插入节点时,先绑定后面的 node.next=head; head=node; } //尾插 public void addLast(int val){ ListNode node=new ListNode(val); //head为空 if(head==null){ head=node; return; } //head不为空 ListNode cur=head; while(cur.next!=null){ cur=cur.next; } cur.next=node; } //插入在指定位置的后面 public void addIndex(int index,int val){ ListNode node=new ListNode(val); //判断index位置是否合法 try{ checkIndex(index); }catch (IndexNotLegalException e){ e.printStackTrace(); } //index=0||index=size if(index==0) { addFirst(val); }else if(index==size()){ addLast(val); }else{ //找到index前一个位置 ListNode pre=findIndexSubOne(index); //插入连接 node.next= pre.next; pre.next=node; } } private void checkIndex(int index)throws IndexNotLegalException{ if(index<0||index>size()){ throw new IndexNotLegalException("index不合法!"); } } private ListNode findIndexSubOne(int index){ ListNode cur=head; int cnt=0; while(cnt!=index){ cur=cur.next; cnt++; } return cur; } public boolean containsValue(int val){ ListNode cur=head; while(cur!=null){ if(cur.val==val){ return true; } cur=cur.next; } return false; } //删除第一次出现的节点 public void remove(int val){ if(head==null){ return; } if(head.val==val){ head=head.next; return; } ListNode cur=head; while(cur.next!=null){ if(cur.next.val==val){ cur.next=cur.next.next; return; } cur=cur.next; } } //删除所有的关键字 public void removeAllKey(int val){ if(head==null){ return; } ListNode pre=head; ListNode cur=head.next; //判断,删除 while(cur!=null){ if(cur.val==val){ pre.next=cur.next; cur=cur.next; }else{ pre=cur; cur=cur.next; } } //判断头结点 if(head.val==val){ head=head.next; } } public void clear(){ //1 //head=null; //2 ListNode cur=head; while(cur!=null){ ListNode curN=cur.next; cur.next=null; cur=curN; } head=null; } }

IndexNotLegalException异常

package LinkedList; public class IndexNotLegalException extends RuntimeException { public IndexNotLegalException(){ } public IndexNotLegalException(String msg){ System.out.println(msg); } }

三.题目

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 6:13:22

OPPO杀疯了!Find X9 Ultra硬刚哈苏,X10爆料直接拉满天花板

最近我被OPPO的操作惊到了——4月21日晚7点&#xff0c;OPPO要和哈苏搞联合发布会&#xff0c;主角是Find X9s Pro和Find X9 Ultra&#xff0c;更离谱的是&#xff0c;下一代Find X10的爆料居然提前炸了出来。手机影像圈的内卷早就不是新鲜事&#xff0c;但OPPO这次直接把哈苏的…

作者头像 李华
网站建设 2026/4/22 1:11:43

Pixel Dream Workshop部署案例:4GB显存GPU上启用VAE Tiling生成256px图像

Pixel Dream Workshop部署案例&#xff1a;4GB显存GPU上启用VAE Tiling生成256px图像 1. 项目概述 像素幻梦 (Pixel Dream Workshop) 是一款基于FLUX.1-dev扩散模型的像素艺术生成工具。与传统AI绘图工具不同&#xff0c;它采用了独特的16-bit像素工坊视觉设计风格&#xff0…

作者头像 李华
网站建设 2026/4/22 2:12:25

QSpectrumAnalyzer完整教程:5个高效技巧掌握多平台SDR频谱分析

QSpectrumAnalyzer完整教程&#xff1a;5个高效技巧掌握多平台SDR频谱分析 【免费下载链接】qspectrumanalyzer Spectrum analyzer for multiple SDR platforms (PyQtGraph based GUI for soapy_power, hackrf_sweep, rtl_power, rx_power and other backends) 项目地址: htt…

作者头像 李华
网站建设 2026/4/22 6:07:15

如何在苹果设备上运行Windows和Linux系统:UTM虚拟机完整指南

如何在苹果设备上运行Windows和Linux系统&#xff1a;UTM虚拟机完整指南 【免费下载链接】UTM Virtual machines for iOS and macOS 项目地址: https://gitcode.com/gh_mirrors/ut/UTM UTM是一款革命性的虚拟化工具&#xff0c;让您能够在iPhone、iPad和Mac上运行Window…

作者头像 李华
网站建设 2026/4/22 4:38:11

老板说高层带头降薪35%,我们很感动,一起扛了半年。直到财务说了一句话,我才明白,这场「共渡难关」,从一开始就只有我们在渡

故事是这样的。公司那段时间经营压力很大&#xff0c;老板开全员大会&#xff0c;说现在形势不好&#xff0c;需要大家一起扛&#xff0c;全员降薪20%&#xff0c;共渡难关。然后话锋一转&#xff0c;说高层以身作则&#xff0c;带头降35%。会议室里有人鼓掌。那种气氛&#xf…

作者头像 李华