数据结构基础

news2025/3/16 2:03:01

将节点构建成树

  • 数据的结构
    • 逻辑结构
      • 集合
      • 线性结构
      • 树形结构
      • 图状结构
    • 存储结构
    • 合理的创建标题,有助于目录的生成
    • 如何改变文本的样式
    • 插入链接与图片
    • 如何插入一段漂亮的代码片
    • 生成一个适合你的列表
    • 创建一个表格
      • 设定内容居中、居左、居右
      • SmartyPants
    • 创建一个自定义列表
    • 如何创建一个注脚
    • 注释也是必不可少的
    • KaTeX数学公式
    • 新的甘特图功能,丰富你的文章
    • UML 图表
    • FLowchart流程图
    • 导出与导入
      • 导出
      • 导入

数据的结构

数据的结构存在逻辑结构和储存结构两个方面;逻辑结构有集合、线性结构、树形结构、图状结构;存储结构有顺序、链式和索引。

逻辑结构

集合

线性结构

树形结构

  1. 节点接口
import java.util.List;

/**
 * @author samson bruce
 */
public interface ListTreeNode<T> {
    /**
     * 节点标志
     *
     * @return 标志
     */
    String getNodeId();

    /**
     * 父节点的标志
     *
     * @return 标志
     */
    String getNodeParentId();

    /**
     * 获取节点后代
     *
     * @return 节点列表
     */
    List<ListTreeNode<T>> getNodeChildren();


    /**
     * 设置节点后代
     * @param listTreeNodes 节点后代
     */
    void setNodeChildren(List<ListTreeNode<T>> listTreeNodes);
}

  1. 构建树的工具类
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author Samson bruce
 */
public class SimpleListTree<T> {

    /**
     * 将链表构建成树
     * @param listTreeNodes 所有的节点
     * @param pid 父节点的标记
     * @return 构建出树结构的链表
     */
    public List<ListTreeNode<T>> buildTree(List<ListTreeNode<T>> listTreeNodes, String pid) {
        List<ListTreeNode<T>> tree = new ArrayList<>();
        for (ListTreeNode<T> node : listTreeNodes) {
            if (Objects.equals(node.getNodeParentId(), pid)) {
                tree.add(findChild(node, listTreeNodes));
            }
        }
        return tree;
    }

    public ListTreeNode<T> findChild(ListTreeNode<T> node, List<ListTreeNode<T>> listTreeNodes) {
        for (ListTreeNode<T> item : listTreeNodes) {
            if (Objects.equals(item.getNodeParentId(), node.getNodeId())) {
                if (node.getNodeChildren() == null) {
                    node.setNodeChildren(new ArrayList<>());
                }
                node.getNodeChildren().add(findChild(item, listTreeNodes));
            }
        }
        return node;
    }
}
  1. 测试类
import lombok.Data;
import java.util.LinkedList;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        TimNode sichuan = new TimNode("1", "0", "四川");
        TimNode chengdu = new TimNode("2", "1", "成都市");
        TimNode whq = new TimNode("21", "2", "武侯区");
        TimNode chq = new TimNode("22", "2", "成华区");
        TimNode dazhou = new TimNode("3", "1", "达州市");
        TimNode dz = new TimNode("31", "3", "大竹");
        TimNode guangan = new TimNode("4", "1", "广安市");
        List<ListTreeNode<TimNode>> cities = new LinkedList<>();
        cities.add(sichuan);
        cities.add(chengdu);
        cities.add(dazhou);
        cities.add(guangan);
        cities.add(whq);
        cities.add(chq);
        cities.add(dz);


        SimpleListTree<TimNode> simpleListTree = new SimpleListTree<>();
        List<ListTreeNode<TimNode>> listTreeNodes = simpleListTree.buildTree(cities, "0");
        System.out.println(listTreeNodes);
    }


    @Data
    public static class TimNode implements ListTreeNode<TimNode> {
        public TimNode(String id, String parentId, String name) {
            this.id = id;
            this.parentId = parentId;
            this.name = name;
        }

        String id;

        String parentId;

        String name;

        List<ListTreeNode<TimNode>> children = new LinkedList<>();

        @Override
        public String getNodeId() {
            return id;
        }

        @Override
        public String getNodeParentId() {
            return parentId;
        }

        @Override
        public List<ListTreeNode<TimNode>> getNodeChildren() {
            return children;
        }

        @Override
        public void setNodeChildren(List<ListTreeNode<TimNode>> listTreeNodes) {

        }
    }
}

图状结构

存储结构

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

2014-01-07 2014-01-09 2014-01-11 2014-01-13 2014-01-15 2014-01-17 2014-01-19 2014-01-21 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

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

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

相关文章

CXL registers

目录 DVSEC CXL PCIe DVSEC for CXL Device//ID 0 DVSEC CXL Capability (Offset 0Ah) DVSEC CXL Control (Offset 0Ch) DVSEC CXL Status (Offset 0Eh) DVSEC CXL Control2 (Offset 10h) DVSEC CXL Status2 (Offset 12h) DVSEC CXL Lock (Offset 14h) DVSEC CXL Capabilit…

【指针大放送】进阶篇(1)

进阶篇的难度比较大,可谓是晦涩难懂&#xff0c;又臭又长啊&#xff0c;但不要害怕,俗话说得好: 雄关漫道真如铁&#xff0c;而今迈步从头越。 指针的主题&#xff0c;我们在初级阶段的《指针》章节已经接触过了&#xff0c;我们知道了指针的概念&#xff1a; 指针就是个变量&a…

性能测试压力曲线模型分析

性能测试模压力曲线&#xff1a; 曲线图关键点介绍&#xff1a; 横轴&#xff1a;从左到右表现了Number of Concurrent Users&#xff08;并发用户数&#xff09;的不断增长。 纵轴&#xff1a;分别表示Utilization&#xff08;资源的利用情况&#xff0c;包括硬件资源和软件…

PS出现的问题——为什么PS另存的格式少了很多

在WIN11系统里面新安装的22和23版本PS会出现另存格式少的情况 解决方式&#xff1a;编辑——首选项——文件处理——开启旧版储存为 解决

uni-app 集成推送

研究了几天&#xff0c;终于是打通了uni-app的推送&#xff0c;本文主要针对的是App端的推送开发过程&#xff0c;分为在线推送和离线推送。我们使用uni-app官方推荐的uni-push2.0。官方文档 准备工作&#xff1a;开通uni-push功能 勾选uniPush2.0点击"配置"填写表单…

R语言实现免疫浸润分析(2)

原始数据承接免疫浸润分析&#xff08;1&#xff09;&#xff0c;下面展示免疫浸润结果&#xff1a; #直接使用IOBR包内的cell_bar_plot pic<-cell_bar_plot(input quantiseq_immo_de[1:20,], title "quanTiseq Cell Fraction") #使用ggplot2 library(ggplot2)…

BUUCTF pwn1_sctf_2016解题思路

题目代码 Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack It! class Modifier {protected $var;publi…

数据通信——网络层(IS-IS)

引言 其实按道理讲&#xff0c;应该开始传输层了&#xff0c;后续的话网络层再补充就好了。不过网络层还有几种协议——IS-IS、EIGRP、BGP。所以还是一边准备整理传输层的知识&#xff0c;顺带把路由协议补充完了吧&#xff01; 这个“破协议”之前在网上重新复习和查资料&…

Maven - 统一构建规范:Maven 插件管理最佳实践

文章目录 Available Plugins开源项目中的使用插件介绍maven-jar-pluginmaven-assembly-pluginmaven-shade-pluginShade 插件 - 标签artifactSetrelocationsfilters 完整配置 Available Plugins https://maven.apache.org/plugins/index.html Maven 是一个开源的软件构建工具&…

运维监控学习笔记9

2、画出拓扑图的小案例&#xff1a; 3、在连接的线上显示网络流量&#xff0c;使用了一个简单的公式&#xff1a; {nginx-server:net.if.out[ens33].last(0)} 4、在screens中显示nginx的状态页面&#xff1a; 5、zabbix报警&#xff1a; 发送邮件的选项。Email可以使用&#xf…

win系统部署Apollo-quick-start-2.1.0

win系统部署Apollo-quick-start-2.1.0 携程Apollo配置中心&#xff0c;官方部署包里提供了2个sql文件&#xff0c;需要刷入数据库。之后修改demo.sh里的数据库配置,最后使用git bash启动demo.sh刷sql脚本 官方部署包里提供了2个sql文件 修改demo.sh文件 使用git bash启动demo…

HotSpot虚拟机之字节码执行引擎

目录 一、栈帧 1. 栈帧结构 2. 基于栈的解释执行过程 二、方法调用 1. 方法调用指令 2. 分派 三、动态类型语言 四、参考资料 一、栈帧 1. 栈帧结构 栈帧是Java虚拟机栈进行方法调用和执行的数据结构&#xff0c;是方法最基本的执行单元&#xff0c;是栈的元素。一个栈…

文件操作 和 IO

目录 ​编辑一、认识文件 1、文件路径 2、其它知识 二、Java 中操作文件 三、文件内容的读写 1、Reader 2、InputStream 3、输出 一、认识文件 文件是在硬盘上存储数据的一种方式&#xff0c;操作系统帮我们把硬盘的一些细节都封装起来了 我们只需要了解文件相关的一些…

stack+queue

适配器 介绍 在C的标准模板库&#xff08;STL&#xff09;中&#xff0c;有几种适配器&#xff0c;它们是一些容器或函数对象的包装&#xff0c;提供了不同的接口和功能&#xff0c;用于适应特定的需求 分类 STL中的适配器可以分为两类&#xff1a;容器适配器和迭代器适配器 容…

PHP自己的框架实现function引入和dump函数(完善篇一)

1、实现效果 2、创建三个function.php 3、文件加载&#xff08;KJ.php&#xff09; 定义目录 define("FILE_PATH",KJ_CORE./file); //定义框架文件路径define("COMMON_PATH",ROOT_PATH./common); //定义公共目录 加载文件 public static function run(){…

一种多策略下RabbitMQ的延时队列实现

1.为什么会用到延时队列? 场景: 最近在开发一款系统中遇到这样一个场景,A系统开通套餐需要把套餐信息以邮件的形式发送给相关工作人员,经过人工审核通过后,在B系统里面开通,A系统会调B系统套餐列表接口查询套餐是否开通成功,开通成功则从A系统去完成订单,假如超过设定时间未开…

vue 发现页面找不到3秒后跳转到本页面

这个路由跳转用到的是编程式跳转this.$router.push 两种写法&#xff1a; 第一种可以通过path来跳转 goto(/find) find是路由里边的路径 <span click"goto(/find)">发现音乐</span> <span click"goto(/my)">我的音乐</span> <…

Virtualbox设置访问外网以及主机和虚拟机互通

参考链接 1、设置使虚拟机访问外网。选中虚拟机&#xff0c;右击选择“设置”。 2、在设置中选择“网络”&#xff0c;然后点击“网卡1”&#xff0c;选择“网络地址转换&#xff08;NAT&#xff09;”模式&#xff0c;点击“确定”。 4.此时你的虚拟机就可以访问外网了 5…

NRF24L01+数据手册_关于几种工作模式

使用的是官方数据手册的章节编号&#xff0c;原文截图方便对照&#xff0c;部分翻译&#xff08;标蓝&#xff09;、个人理解&#xff08;标紫&#xff09;&#xff0c;关键信息&#xff08;标红&#xff09;。 6.1 Operational Modes操作模式 6.1.1 State diagram状态机图 6…

sqlloader学习笔记

INFILE的用法 1&#xff09;模糊导入多个数据的文件。 可以在文件名中使用通配符。 星号 &#xff08;*&#xff09; 表示复数字符&#xff0c;问号 &#xff08;&#xff1f;&#xff09; 表示单个字符。 INFILE emp*.dat INFILE m?emp.dat 2&#xff09;如果不需要导入数据…