单链表的增删改查

2023-11-17

/*
链表的增、改、查、删
 */

public class LinkLIST {
    int size;//节点个数
    NewNode head;//头节点地址
    class NewNode{
        int val;//存放具体数据
        NewNode next;//存下一个节点的地址
        public NewNode(int val){
            this.val=val;
        }
    }
    public void addFirst(int val){//头插
        NewNode node=new NewNode(val);
        if(head==null){
            head=node;
        }else {
           node.next=head;
           head=node;
        }size++;

    }
    public void addIndex(int index,int val){
        //在index位置插入值val
        if(index<0||index>size){
            System.out.println("illegal!!!");
            return;
        }else {
            NewNode node=new NewNode(val);
            NewNode temp=head;
                for (int i = 0; i < index - 1; i++) {
                    node.next=temp.next;
                    temp.next=node;

                    size++;

                }

            }
        }
        private boolean rangeCheck (int index){///改查删时使用的判断,是否合法
        if(index<0||index>=size){
            return false;
        }else {
            return true;
        }
        }
        public int get(int index){//查找index位置元素
        if(rangeCheck(index)==true){
            NewNode temp=head;
            for (int i=0;i<index;i++){
                temp=temp.next;

        }
            return temp.val;}
        else {
            System.out.println("illedgr!!!");
        } return -1;

    }
    public boolean contains(int val){//查是否含有值val
        for(NewNode temp=head;temp!=null;temp=temp.next){
            if(temp.val==val){
                return true;
            }
        }return false;

    }
    public int set(int index,int newVal){//改
        if(rangeCheck(index)==true){
            NewNode node=head;
            for (int i = 0; i < index; i++) {
                node=node.next;
            }
            int oldVal=node.val;
            node.val=newVal;
            return oldVal;
        }else {
            return -1;
        }
    }

    public String toString(){
        String ret=" ";
        NewNode prev=head;
        while (prev!=null){
            ret+= prev.val;
            ret+="-->";
            prev=prev.next;
        }
        ret+="NULL";
        return ret;
    }


}


public class Test2 {
    public static void main(String[] args) {
        LinkLIST a=new LinkLIST();
        a.addFirst(2);
        a.addFirst(3);
        a.addFirst(1);
        a.addFirst(5);
        System.out.println(a);
        a.addIndex(2,7);
        System.out.println(a);
        System.out.println(a.get(2));
        System.out.println(a.get(9));
        System.out.println("-----------------");
        System.out.println(a.contains(5));
        System.out.println(a.contains(15));
        System.out.println(a.set(3,666));
    }
}

输出结果:

 

删除操作后续在更新啦 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单链表的增删改查 的相关文章

  • 代码检视/代码审查/Code Review

    目录 一 代码检视的目的 二 代码检视前的准备 三 代码检视九句箴言 四 代码检视checklist 经验检查项 五 代码检视结果度量 六 代码质量衡量指标 七 高质量代码 一 代码检视的目的 代码检视是一种用来确认方案设计和代码实现的质量
  • Kotlin之高阶函数

    一 定义高阶函数 高阶函数和Lambda的关系密不可分 在Lambda编程的基础知识 使用的一些与集合相关的函数式API用法 如map filter函数等 又比如Kotlin的标准函数 如run apply函数等 这几个函数都有一个共同的特
  • 用python进行FamaMacBeth回归

    from linearmodels import FamaMacBeth import pandas as pd import numpy as np 生成所用面板数据集 该数据集在不同的日期有不同的个体 期望回归模型 Y 3 6 X1 4
  • 前端例程20221227:下雪动画

    演示 动图太大了不好上传 这里就放个静态图吧 实际上这里是雪花从上到下飘落的效果 代码

随机推荐

  • 分集 复用 多址

    1 分集 是在多条独立路径上传输相同的数据 接收端通过分集合并技术 抵抗信道衰落 提高传输可靠性 降低误码率 复用 是在多条独立路径上传输不同数据 充分利用系统资源 提高系统容量 即总数据率 2 分集 是一个信号通过多条路径送达接收端 好处
  • UVA-11212 编辑书稿 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 这道题目在书上的 迭代加深搜索 章节出现 即是采用迭代加深搜索的方法来做 但是咋一看题目 我认为用广度优先搜索也合适 因为题目要求
  • python爬虫系列X--小知识汇总

    X系列不针对专门技术 只是一些辅助 内容零散添加 1 为爬虫运行状态设置邮件提醒 使用python smtp email模块完成 from email mime text import MIMETextfrom email header i
  • 【第63篇】CSI-Net:统一的人体特征和姿态识别

    摘要 https arxiv org pdf 1810 03064 pdf 我们构建了CSI Net 一个统一的深度神经网络 DNN 来学习WiFi信号的表示 使用CSI Net 我们共同解决了两个身体特征问题 生物特征估计 包括身体脂肪
  • 【美国大学生数学建模比赛】2020C题(总结和原创参赛论文)百度云请自取

    最新想法 本学期选修了下大数据 发现其实本题的解法还涉及到数据库 大数据各个层次数据处理和分布式数据流blabla 而之前那几天美赛做的还停留在最基础的数据处理层 而且我现在觉得如果要做大的话不应该在这个层里面进行深度学习 前面的数据库处理
  • 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?实现 int sqrt(int x) 函数。

    今天我们来爬一爬楼梯 假设你正在爬楼梯 需要 n 阶你才能到达楼顶 每次你可以爬 1 或 2 个台阶 你有多少种不同的方法可以爬到楼顶呢 注意 给定 n 是一个正整数 示例 1 输入 2 输出 2 解释 有两种方法可以爬到楼顶 1 阶 1
  • 为啥 Python 运行速度这么慢 ?

    作者 Anthony Shaw 是 Python 软件基金会成员和 Apache 基金会成员 近来Python可谓人气骤升 这门编程语言用于开发运维 DevOps 数据科学 网站开发和安全 然而 它没有因速度而赢得任何奖牌 Java在速度方
  • javascript防抖(Debouncing)和节流阀(Throttling)

    中文原文链接 https jinlong github io 2016 04 24 Debouncing and Throttling Explained Through Examples 英文原文链接 https css tricks c
  • C++ 生命周期

    C 程序的生命周期要经过编码 Coding 预处理 Pre processing 编译 Compiling 和运行 Running 四个阶段 编码即coding阶段 这阶段主要是定义变量 写语句 实现各种数据结构 函数和类 预处理是 C C
  • Qt::带返回值的信号发射方式

    一般来说 我们发出信号使用emit这个关键字来操作 但是会发现 emit并不算一个调用 所以它没有返回值 那么如果我们发出这个信号想获取一个返回值怎么办呢 两个办法 1 通过出参形式返回 引用或者指针的方式带回 比如emit sig int
  • 【SHELL脚本】MYSQLDUMP备份数据库,含忽略数据表

    背景介绍 项目的数据库十分重要 必须保证数据不能丢失 项目组的数据库为mysql5 7 12 采用备份工具mysqldump 开发需求 备份指定多个数据库 部分数据库的部分数据表需要指定忽略 打包上传到go FastDFS文件管理器 下面为
  • jvm 内存分配

    1 任何对象都是以8字节为粒度进行对齐的 2 类属性按照如下优先级进行排列 长整型和双精度类型 8字节 整型和浮点型 4字节 字符和短整型 2字节 字符类型和布尔类型 1字节 最后时引用类型 3 不同类型继承关系类的成员不能混合排列 首先按
  • 程序员究竟还需要读书么?

    近来看了2篇和读书有关的文章 一篇提到Joel讲现在程序员不太读书了 主要靠在网上找各种参考资料 一篇则是马总说的 成功与情商有关 与读书多少关系不大 一定程度上这两个观点都有点道理 可以靠StackOverflow com和搜索引擎找到各
  • 1 FFmpeg从入门到精通-FFmpeg简介

    1 FFmpeg从入门到精通 FFmpeg简介 2 FFmpeg从入门到精通 FFmpeg工具使用基础 3 FFmpeg从入门到精通 FFmpeg转封装 4 FFmpeg从入门到精通 FFmpeg转码 5 FFmpeg从入门到精通 FFmp
  • 一个人开发APP系列之实战1 制作APP产品启动图标

    声明 写这个博客系列也是为了清晰思路 新手写的不好 请大神们指导指导 建议想学的还是先去android develops官网看看相关资料吧 好了 不闲扯了 进入正题 今天的目的是使用Android Studio自带的工具Image Asse
  • TencentOS-tiny 功耗管理 (二十 二)- tickless(低功耗)

    一 功耗管理 tickless 概述 TencentOS tiny的tickless机制提供了一套非周期性时钟的方案 在系统无需systick驱动调度的情况下 停掉systick 初级功耗管理方案下 因为还有系统systick的存在 因此系
  • python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(下篇)

    目录 一 前言 二 基于轨迹与路面重心偏离度误差的预测自动差速小车循迹控制策略 三 轨迹图像的处理要点 四 本篇部分核心控制策略python代码 五 结论 一 前言 基于最近的测试 得到了一种粗略控制的算法 其控制效果适合单线路和急转弯的情
  • DevExpress控件手册

    https www evget com article 2018 7 17 28180 html 手册是全英文的 有chm和pdf两种格式 winform手册有两百来兆 内容的确是很详细了 每个控件还有入门的详细例子 建议下载CHM格式的
  • 【AUTOSAR】CCP协议的代码分析与解读(二)----CCP协议格式和命令代码

    CCP协议介绍 CCP的全称是CAN Calibration Protocol CAN标定协议 是基于CAN总线的ECU标定协议规范 CCP协议遵从CAN2 0通信规范 支持11位标准与29位扩展标识符 CCP通信方式 CCP协议采用主从通
  • 单链表的增删改查

    链表的增 改 查 删 public class LinkLIST int size 节点个数 NewNode head 头节点地址 class NewNode int val 存放具体数据 NewNode next 存下一个节点的地址 pu