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

链表。。。

目录

5.1 链表的结点

5.2 插入

5.3 链表长度

5.4 查找

5.5 指定位置删除

5.6 代码


5.1 链表的结点

一个结点包括:值和指向下一个结点的指针。

package com.qcby.链表;public class Node {int value;Node next;public Node(int val){value=val;}@Overridepublic String toString() {return "Node [value="+value+",next="+next+"]";}}

5.2 插入

分为尾插和头插。

尾插和头插法都分为两种情况。

5.3 链表长度

遍历数组,记录节点个数即可。

5.4 查找

遍历链表,如果某一个节点的值等于要查找的值,则查找成功;否则查找失败。

5.5 指定位置删除

首先判断删除的位置合不合法。如果不合法,则无法删除。

合法,则删除分为两种情况:第一种是删除头结点;第2种是删除其他位置。

如果是删头结点,直接让head等于head.next。如果是其他,则先遍历链表(用到pre 和 index,pre 是index的前一个结点),找到要删除的位置,令pre.next=index.next。

5.6 代码

package com.qcby.链表;public class LinkList {Node head=null;//尾插法public void insert(int value) {Node node=new Node(value);if(head==null) {head=node;return;}//找到最后Node index=head;while(index.next!=null) {index=index.next;}//插入index.next=node;}//头插法public void insertHead(int value) {Node node=new Node(value);if(head==null) {head=node;return;}node.next=head;head=node;}//链表长度public int getLen() {Node index=head;int count=0;while(index!=null) {count++;index=index.next;}return count;}//链表中查找数据public int search(int num) {Node index=head;int count=0;while(index!=null) {if(index.value==num) {return count;}else {index=index.next;}count++;}return -1;}//指定位置删除public void delete(int position) {//合法if(position<0||position>=getLen()) {System.out.println("删除位置不合法!");}//删头if(position==0) {head=head.next;}else {//先找到位置int count=0;Node index=head;Node pre=null;while(count!=position) {pre=index;index=index.next;count++;}pre.next=index.next;}}@Overridepublic String toString() {String res="[ ";Node index=head;while(index!=null) {res=res+index.value+" ";index=index.next;}res=res+"]";return res;}}
package com.qcby.链表;public class Test {public static void main(String[] args) {
//		Node node1=new Node(9);
//		Node node2=new Node(5);
//		Node node3=new Node(90);
//		Node node4=new Node(0);
//		node1.next=node2;
//		node2.next=node3;
//		node3.next=node4;
//		System.out.println(node1);LinkList list=new LinkList();list.insertHead(0);list.insertHead(10);list.insertHead(2);list.insertHead(8);list.insertHead(6);System.out.println(list);System.out.println(list.getLen());System.out.println(list.search(100));System.out.println(list.search(2));list.delete(2);System.out.println(list);}
}

http://www.lryc.cn/news/623191.html

相关文章:

  • 全面解析Tomcat生命周期原理及其关键实现细节
  • 【论文笔记】STORYWRITER: A Multi-Agent Framework for Long Story Generation
  • 云原生俱乐部-RH124知识点总结(3)
  • 如何解决C盘存储空间被占的问题,请看本文
  • 异构数据库兼容力测评:KingbaseES 与 MySQL 的语法・功能・性能全场景验证解析
  • 后量子密码算法SLH-DSA介绍及开源代码实现
  • huggingface TRL中的对齐算法: KTO
  • 嵌入式硬件篇---BuckBoost电路
  • GPIO初始化及调用
  • AI杀死的第一个仪式:“hello world”
  • CentOS 7 一键部署 上Maria Database(MariaDB)10.3.38 安装手册(避开 Oracle 19c 路径)
  • AT89C52单片机介绍
  • Hexo 双分支部署指南:从原理到 Netlify 实战
  • Swift 实战:实现一个简化版的 Twitter(LeetCode 355)
  • 洛谷B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • ESP32唤醒流程
  • 六十八、【Linux数据库】percona软件介绍 、 innobackupex备份与恢复
  • 《后室Backrooms》中文版,购物误入异空间,怪物追逐,第一人称冒险逃生
  • STM32-GPIO实践部分1-跑马灯实验
  • Java基础 8.16
  • 基于深度强化学习的多用途无人机路径优化研究
  • 基于Transformer的机器翻译——模型篇
  • C# 应用特性的更多内容:多维度解析与深度拓展
  • Mysql常见的优化方法
  • 如何在 Ubuntu 24.04 Server 或 Desktop 上安装 XFCE
  • 【Python】Python爬虫学习路线
  • IOMMU多级页表查找的验证
  • 字节数据流
  • 后量子密码算法ML-KEM介绍及开源代码实现
  • 11-verilog的RTC驱动代码