数据结构代码实现 —— 单链表【Java】

news2025/1/14 18:04:06

单链表的概述及性质等在篇不做赘述,有需要可移步以下文章:

《数据结构 C语言版 严蔚敏 第2版》:线性表icon-default.png?t=N7T8https://blog.csdn.net/weixin_43551213/article/details/134048025 

以下仅展示使用 Java 实现单链表

 

结点结构定义:

public class SingleLinkedList {
    private int data;
    private SingleLinkedList next;
}

 

追加元素:

public SingleLinkedList append(SingleLinkedList node){
    SingleLinkedList nowNode = this;
    while (true){
        SingleLinkedList nextNode = nowNode.next;
        if(null == nextNode){
            break;
        }
        nowNode = nextNode;
    }
    nowNode.next = node;
    return this;
}

 

删除元素:

public void deleteNext(){
    this.next = this.next().next();
}

 

插入元素:

public void insertNode(SingleLinkedList node){
    node.next = this.next();
    this.next = node;
}

 

打印链表:

public String show(){
    SingleLinkedList tempNode = this;
    StringBuilder builder = new StringBuilder("[" + String.valueOf(tempNode.getData()));
    while (tempNode.next != null){
        tempNode = tempNode.next();
        builder.append(" ").append(String.valueOf(tempNode.getData()));
    }
    builder.append("]");
    return builder.toString();
}

 

测试程序:

/**
 * @Author: QiuXuan
 * @Email: qiu_2022@aliyun.com
 * @Project: DataStructure
 * @Date: 2024-01-19 16:27
 * @Version 1.0
 * @Since 1.0
 **/
public class SingleLinkedListTest {
    public static void main(String[] args){
        SingleLinkedList listNode = new SingleLinkedList(2);
        listNode.append(new SingleLinkedList(3));
        listNode.append(new SingleLinkedList(4));
        listNode.append(new SingleLinkedList(5)).append(new SingleLinkedList(6));
        System.out.print(listNode.getData() + " ");
        System.out.print(listNode.next().getData() + " ");
        System.out.print(listNode.next().next().getData() + " ");
        System.out.print(listNode.next().next().next().getData() + " ");
        System.out.println(listNode.next().next().next().next().getData() + " ");

        listNode.deleteNext();
        System.out.println(listNode.show());

        listNode.insertNode(new SingleLinkedList(7));
        System.out.println(listNode.show());
    }
}

测试程序与上文画的图使用的数据不是一致的!!! 

一  叶  知  秋,奥  妙  玄  心 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1401220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国外邮箱服务:功能、作用与价格全面解析

不同于我们熟悉的国内邮箱服务(如163、QQ邮箱等),国外邮箱通常指的是海外提供商所提供的电子邮件服务,如谷歌的Gmail、微软的Outlook、雅虎的Yahoo Mail等,当然也有特殊的比如Zoho Mail邮箱,国内外双版本&a…

Docker(四)操作容器

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 操作 Docker 容器 容器是 Docker 又一核心概念。 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境…

算法专题[递归-搜索-回溯-2-DFS]

算法专题[递归-搜索-回溯-2-DFS] 一.计算布尔二叉树的值:1.思路一:2.GIF题目解析 二.求根节点到叶子节点的数字之和1.思路一:2.GIF题目解析 三.二叉树剪枝1.思路一:2.GIF题目解析 四.验证二叉搜索树1.思路一:2.GIF题目…

C++学习笔记——指针

1,指针的基本概念 指针的作用:可以通过指针间接访问内存 内存的编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址 上图中的p就是a变量的指针,也可以记作*a 2,指针变量的定义和使用 指针变量定…

AI大模型开发架构设计(3)——如何打造自己的大模型

文章目录 如何打造自己的大模型1 新时代职场人应用AIGC的5重境界2 人人需要掌握的大模型原理职场人都能听懂的大语音模型的训练过程职场人都能听得懂的大语言模型的Transformer推理过程 3 如何构建自己的大模型需要具备三个方面的能力LangChain是什么?LangChain主要…

【精选】中间件 tomcat漏洞复现

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

在腾讯云买了云服务器和域名如何快速建网站?

使用腾讯云服务器搭建网站全流程,包括轻量应用服务器和云服务器CVM建站教程,轻量可以使用应用镜像一键建站,云服务器CVM可以通过安装宝塔面板的方式来搭建网站,腾讯云服务器网txyfwq.com分享使用腾讯云服务器建站教程,…

基于SQL的可观测性现状观察

本文字数:8975;估计阅读时间:23 分钟 作者:Ryadh Dahimene 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 1375年的加泰罗尼亚地图所展示的地中海地区。通商媒介语(Lingua F…

深度学习记录--正则化(regularization)

什么是正则化? 正则化(regularization)是一种实用的减少方差(variance)的方法,也即避免过度拟合 几种正则化的方法 L2正则化 又被称为权重衰减(weight dacay) 在成本函数中加上正则项: 其中 由于在w的更新过程中会递减,即权…

STL---Stack和Queue

一、stack的介绍和使用 (1)介绍 翻译: (1)stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 (2) stack是作为容器…

【2020】百度校招Java研发工程师笔试卷(第二批)算法题

贴一下我去年9月份写的博客 三道编程题,一道数学题,两道图论,哎嘿嘿,我就是不会做,哎嘿嘿,哭了。。。 一.最小值 牛牛给度度熊出了一个数学题,牛牛给定数字n,m,k,希望度度熊能找到…

【小沐学GIS】基于C#绘制三维数字地球Earth(OpenGL)

🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第二期3【小沐学GIS】…

【二叉树练习2】

文章目录 判断是否是完全二叉树找出p和q的最近的公共祖先非递归实现前序遍历非递归实现中序遍历非递归实现后序遍历 判断是否是完全二叉树 boolean isCompleteTree(TreeNode root){if (root null){return true;}//创建队列Queue<TreeNode> queue new LinkedList<>…

文心一言 VS 讯飞星火 VS chatgpt (183)-- 算法导论13.4 7题

七、用go语言&#xff0c;假设用 RB-INSERT 将一个结点 x 插入一棵红黑树&#xff0c;紧接着又用 RB-DELETE 将它从树中删除。结果的红黑树与初始的红黑树是否一样&#xff1f;证明你的答案。 文心一言&#xff1a; 首先&#xff0c;我们需要明确RB-INSERT和RB-DELETE的基本操…

“gradle project sync failed”

很久没打开AndroidStudio了&#xff0c;打开电脑发现这个软件都没了。重新安装后创建项目不成功&#xff0c;就提示了这个错误。 错误原因 “gradle project sync failed”&#xff1a;gradle没有配置成功。在安卓项目下找到目标文件&#xff1a;gradle --> wrapper -->…

机械设计-哈工大课程学习-螺旋传动

二、摩擦类型 1、静态摩擦&#xff1a;这是身体静止时所经历的摩擦。换句话说&#xff0c;就是身体有运动倾向时的摩擦力。 2、动态摩擦&#xff1a;这是身体在运动时所经历的摩擦。也称为动摩擦。动摩擦有以下两种类型&#xff1a; ①滑动摩擦&#xff1a;一个物体在另一个…

赛车游戏简单单车C语言版

#include<stdio.h> #include<easyx.h> #include<time.h>#define WIDTH 512 #define HEIGHT 768//定义一个汽车类 struct FCar {//坐标float x, y;// 汽车种类int type;//汽车速度float speed; };//定义全局变量 图片坐标 IMAGE BG_IMG; //背景图片坐标 float…

SV学习——数据类型(1)

文章目录 1. 内建数据类型2. 用户自定义3. 枚举类型 1. 内建数据类型 SV中引入新的数据类型logic&#xff0c;SV作为侧重于验证的语言&#xff0c;并不十分关切logic对应的逻辑应该被综合位寄存器还是线网&#xff0c;因为logic被使用的场景如果是验证环境&#xff0c;那么它只…

AI对比:ChatGPT与文心一言的异同与未来

文章目录 &#x1f4d1;前言一、ChatGPT和文心一言概述1.1 ChatGPT1.2 文心一言 二、ChatGPT和文心一言比较2.1 训练数据与知识储备2.2 语义理解与生成能力2.2 应用场景与商业化探索 三、未来展望3.1 模型规模与参数数量不断增加3.2 多模态交互成为主流3.3 知识图谱与大模型的结…

如何在 Ubuntu / Raspbian 上安装 MariaDB

Raspberry Pi OS&#xff08;原为Raspbian&#xff09;是为树莓派基于Debian开发的操作系统。 从2015年起&#xff0c;树莓派基金会正式将其作为树莓派的官方操作系统。 Raspbian是由Mike Thompson和Peter Green创建的一个独立项目。第一个版本于2012年6月发布&#xff0c;至…