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

链表。。。

目录

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.xdnf.cn/news/17983.html

相关文章:

  • 【C#补全计划】Lambda表达式
  • java 面试八股集锦
  • 企业级Java项目金融应用领域——银行系统(补充)
  • 力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II
  • PMP-项目管理-十大知识领域:整合管理-协调各知识领域,确保项目目标一致
  • webpack
  • 架构调整决策
  • 基础数据结构
  • 027 动静态库 —— 静态库
  • 马拉松|基于SSM的马拉松报名系统微信小程序的系统设计与实现(源码+数据库+文档)
  • uniapp:微信小程序使用Canvas 和Canvas 2D绘制图形
  • 给纯小白的Python操作Word笔记
  • 使用npm/pnpm自身安装指定版本的pnpm
  • 【论文笔记】Multi-Agent Based Character Simulation for Story Writing
  • Vue3从入门到精通:5.2 Vue3构建工具与性能优化深度解析
  • 同创物流学习记录2·电车光电
  • 【八股】计网-计算机网络-秋招
  • Windows MCP.Net:革命性的 .NET Windows 桌面自动化 MCP 服务器
  • 分享一个大数据的源码实现 基于Hadoop的二手车市场数据分析与可视化 基于Spark的懂车帝二手车交易数据可视化分析系统
  • ABB焊接机器人弧焊省气
  • ubuntu远程桌面很卡怎么解决?
  • 深入剖析跳表:高效搜索的动态数据结构
  • JavaScript 逻辑运算符与实战案例:从原理到落地
  • 杂记 02
  • Docker安装——配置国内docker镜像源
  • Python从入门到高手9.3节: 利用字典进行格式化
  • std::copy_if
  • 告别手动优化!React Compiler 自动记忆化技术深度解析
  • 47.分布式事务理论
  • 【大模型微调系列-03】 大模型数学基础直观入门