首页 > 编程语言 >9.15单链表无哨兵java实现

9.15单链表无哨兵java实现

时间:2023-09-15 19:45:52浏览次数:34  
标签:Node head java int 9.15 value next 表无 null


public class Main {
public static void main(String[] args) {
LNode L = new LNode();
System.out.println(L.number());
L.Isempty();
L.addFirst(4);//头插
L.addFirst(3);
L.addFirst(2);
L.addFirst(1);
L.addLast(5);//尾插
L.check();
LNode.Node L1 = L.findLast();//最后一个结点
System.out.println();
System.out.println(L1.value);
LNode.Node L2 = L.indexcheck(0);//指定索引查询
if (L2 == null) {
System.out.println("未查询到指定索引");
} else {
System.out.println(L2.value);
}
int i = L.valuecheck(1);
if (i == -1) {
System.out.println("不存在指定元素");
} else {
System.out.println("存在该元素,索引为" + i);
}
System.out.println("链表大小" + L.number());
L.removeIndex(0);
L.removeValue(2);
L.insertIndex(0, 2);
L.insertIndex(4, 6);
L.check();

}

public static class LNode {
private Node head = null;//头指针

public class Node {
int value;
Node next;

public Node(int value, Node next) {
this.value = value;
this.next = next;
}
}

//头插
public void addFirst(int value) {
if (head == null) {
head = new Node(value, null);
} else {
head = new Node(value, head);
}
}

//尾插
public void addLast(int value) {
Node node = findLast();
if (node == null) {
addFirst(value);
return;
}
node.next = new Node(value, null);
}

//找最后一个节点
public Node findLast() {
if (head == null) {
return null;
}
Node p;
for (p = head; p.next != null; p = p.next) {
}
return p;
}

//遍历
public void check() {
if (head == null) {
System.out.println("空链表");
return;
}
for (Node p = head; p != null; p = p.next) {
System.out.print(p.value + " ");
}
}

//根据索引查找元素
public Node indexcheck(int index) {
int i = -1;
for (Node p = head; p != null; p = p.next) {
i++;
if (i == index) {
return p;
}
}
return null;
}

//返回链表大小
public int number() {
int i = 0;
for (Node p = head; p != null; p = p.next) {
i++;
}
return i;
}

//查找指定值
public int valuecheck(int value1) {
int i = -1;
for (Node p = head; p != null; p = p.next) {
i++;
if (p.value == value1) {
return i;
}
}
return -1;
}

//删除指定索引元素
public void removeIndex(int index) {
int i = -1;
if (head == null) {
System.out.println("空链表");
return;
}
if (index > number() - 1) {
System.out.println("索引不存在");
return;
}
if (index == 0) {
head = head.next;
return;
}
for (Node p = head; p != null; p = p.next) {
i++;
if (index - 1 == i) {
p.next = p.next.next;
return;
}
}
}

//删除指定值元素
public void removeValue(int value1) {
int i = -1;
int j = 0;
if (head == null) {
System.out.println("空链表");
return;
}

for (Node p = head; p != null; p = p.next) {
i++;
if (value1 == p.value) {
j++;
removeIndex(i);
}
}
if (j == 0) {
System.out.println("该值不存在");
}
}

//按索引插入指定值
public void insertIndex(int index, int value) {
int i = -1;
if (head == null) {
System.out.println("空链表");
return;
}
if (index == 0) {
addFirst(value);
return;
}
if (index == number()) {
addLast(value);
return;
}
for (Node p = head; p != null; p = p.next) {
if (i == index - 1) {
p.next = new Node(value, p.next);
return;
}
}
System.out.println("插入失败,没有指定索引");
}

//判空
public void Isempty() {
if (head == null) {
System.out.println("空链表");
} else {
System.out.println("非空链表");
}
}

}
}

标签:Node,head,java,int,9.15,value,next,表无,null
From: https://www.cnblogs.com/zhaoqianwan/p/17705789.html

相关文章

  • 个人项目:Java实现论文查重
    项目Github仓库链接这个作业属于哪个课程软件工程这个作业要求在哪里个人项目这个作业的目标实现论文查重的功能,并测试项目运行情况和性能等一、PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划60120Es......
  • 无涯教程-JavaScript - LOOKUP函数
    描述需要查看单个行或一列并从第二行或第二列的同一位置查找值时,请使用LOOKUP函数。使用"查找"功能搜索一行或一列。使用VLOOKUP函数可搜索一行或一列,或搜索多行和多列(如表)。它是LOOKUP的改进版本。有两种使用LOOKUP的方法-矢量形式−UsethisformofLOOKUPtosearc......
  • 跟狂神学Java第一次写博客
    MarkDown学习标题字体helloworld!//前后加*helloworld!//前后加**helloworld!//前后加***helloworld!//前后加~~引用一个>选择狂神说分割线三个***或三个---图片感叹号加中括号(中括号写图片名字)加小括号(小括号写图片路径)超链接一个中括号(中括号写超链接名......
  • Java---数组
    学完之后需要实现这两个问题:#生成六个1-33之间的随机数,要求不重复+特殊号码(生成彩票)#数组扩容:先定义一个十个长度的数组,写一个方法用于向数组里面存值,每次只存入一个,反复的调用存值的这个方法,当存入的值超过十个以后,数组长度自动扩充用于存放后面的数据。创建数组本质上还......
  • 无涯教程-JavaScript - INDIRECT函数
    描述INDIRECT函数返回由文本字符串指定的引用。如果您在Excel公式中键入引用B1,则Excel会理解这引用了单元格B1。但是,Excel无法将文本字符串"B1"理解为引用。因此,如果单元格引用采用文本字符串的形式,则需要使用INDIRECT函数将其转换为实际的单元格引用。立即判断引用以显......
  • 在 Java 中自定义反序列化:实现可序列化接口
    实现可串行化接口的功能Serialized接口用于管理Java默认序列化机制使用的序列化和反序列化过程。Java虚拟机(JVM)通过该类的Serialized接口实现来指示该类是否具有可序列化和反序列化的能力。该接口不仅有利于序列化,而且还使开发人员可以自由地更改默认的反序列化行为。由......
  • java RSA 私钥解密、公钥解密
    importorg.apache.commons.codec.binary.Base64;importsun.security.rsa.RSAPrivateCrtKeyImpl;importorg.bouncycastle.util.encoders.Hex;importjavax.crypto.Cipher;importjava.io.ByteArrayOutputStream;importjava.security.Key;importjava.security.KeyFactory......
  • Web阶段:第三章:JavaScript语言
    《JavaScript语言精粹》点击下载,密码:synuJavaScript介绍:1.Javascript语言诞生主要是完成页面的数据验证。2.它运行在客户端,需要运行浏览器来解析执行JavaScript代码。3.JS是Netscape网景公司的产品,最早取名为LiveScript;为了吸引更多java程序员。更名为javascript。4.JS是弱类型......
  • 无涯教程-JavaScript - GETPIVOTDATA函数
    描述GETPIVOTDATA函数返回存储在数据透视表报表中的数据。您可以使用它从数据透视表报表中检索摘要数据,前提是该摘要数据在报表中可见。您可以通过以下方式快速输入一个简单的GETPIVOTDATA公式:在要向其返回值的单元格中键入=(等号),然后在"数据透视表"报表中单击包含要返回的......
  • Java特性有哪些
    Java特性:安全性,分布式,简单性,可移植性,面向对象,高性能,多线程,健壮性。具体的链接如下:JAVA的特性和优势-知乎(zhihu.com){之前的随笔因为观感不好与影响查阅速度被我删除了}......