重拾数据结构(一)

单链表之首尾相连,成对输出 例子:1->2->3->4->5->6->7 输出:1->7->2->6->3->5->4 要求:空间复杂度为O(1),即不可借助其他容器 思路找到中间的节点将中间以后的节点链接到新的链表头下,反转。然后以头插的形式插入到前半部分的链表中 找到一个链表中的中间节点,我们可以使用快慢指针的方式。即指针s走一格,指针p走两格。当p->next为空时,此时的s就处于链表的中间位置 申请一个新节点作为头节点,将s以后的链表节点以头插法的形 阅读详情

1.链表与数组,统称线性表

(1)链表的首尾相接,每个元素只有一个前驱和后继;数组依靠索引来执行getElement,所以n个链表执行getELement操作最多会遍历n个元素,数字直接可以获取

(2)链表删除元素只需要改变后继和前驱,数组需要将删除元素后所有元素迁移一位

         需要通过getElement获取元素然后删除,此时链表与数组操作耗时无法确定

(3)链表添加元素改变前驱和后继,数组需要后移操作

(4)数组在逻辑上相邻的元素在物理位置上也相邻,链表在物理上可以连续也可以不连续

2.二叉树

基本性质:

二叉树必须是有序的;

每个节点最多有两个子结点;

二叉树第i层最多有2^(i-1)个结点;

深度为k的二叉树最多有(2^k) -1个结点;

升序二叉树 L(左结点) < N(根节点) < R(右结点);

降序二叉树 L(左结点) > N(根节点) > R(右结点);


二叉树相关概念:

满二叉树:除最后一层外,每个节点都有两个子节点。

完全二叉树:除最后一层和倒数第二层,每个节点都有两个子节点,且最后一层的结点连续集中靠左。

霍夫曼树:结点要么没有子节点,要么有两个子节点。

平衡二叉树:当且仅当两个子树的高度相差不超过1。

满二叉树是完全二叉树,但是完全二叉树不是满二叉树。

二叉树是有序的,中序遍历为二叉树的有序输出。




3.进制多项式

二进制:P(n)=p_0*2^0+p_1*2^1+p_2*2^1+⋯+p_(n-1)*2^(n-1)+p_n*2^n

十进制:P(n)=p_0*10^0+p_1*10^1+p_2*10^1+⋯+p_(n-1)*10^(n-1)+p_n*10^n

可扩展为N进制:P(n)=p_0*N^0+p_1*N^1+p_2*N^1+⋯+p_(n-1)*N^(n-1)+p_n*N^n

最终(p_0,p_1,p_2⋯⋯p_n-1,p_n)属于进制集合[0,1]或[0,1,2,3,4,5⋯8,9]或[0,1,2,3,4⋯n-1,n]

进制转换使用栈做存储

简单算法:N = N (div d) X d + N mod d  (其中div为整除运算,mod为求余运算)

4.非基本类型的数据都是对象

所以数组int[] a = {1, 2, 3}也是对象

5.ArrayList与Vectory、LinkedList

ArrayList与Vectory都是数组,不同的是Vector所有的public方法都使用synchronized修饰,所以Vector是线程安全的;

LinkedList的底层是双向链表;

ArrayList与Vectory插入数据性能弱于LinkedList;

ArrayList与Vectory的查找性能强于LinkedList;

6.枚举范例

public enum Category {
    NEWS(0),//1
    TOPIC(1),//2
    MINE(2),//3
    LOGIN(4),//4
    REGISTER(5);//5

    private int mValue = 0;

    private Category(int value) {
        mValue = value;
    }

    public static Category valueOf(int value) {
        Category category = Category.NEWS;
        switch (value) {
            case 0:
                category = Category.NEWS;
                break;
            case 1:
                category = Category.TOPIC;
                break;
            case 2:
                category = Category.MINE;
                break;
            case 3:
                category = Category.LOGIN;
                break;
            case 4:
                category = Category.REGISTER;
                break;
        }
        return category;
    }

}



Java 进阶一知识--重拾者 Java 进阶知识--重拾者AIMING 阅读详情

相关推荐

华为HPLC模组全拆解之电力载波收发原理分析

电力线载波通信(PLC)是一种使用电力线进行数据传输的通信技术,即利用现有电网作为信号的传输介质,使电网在传输电力的同时可以进行数据传输。目前根据所用频段的不同,低压电力线载波通信一般分为窄带电力线载波通信(10KHz~500KHz)和宽带电力线载波通信(2MHz~20MHz)。这里的频率可以简单理解为单片机串口的通信波特率,频率越小通信速度越慢,频率越大通信速度越快。为了研究电力载波通信原理,笔者以华为的一款宽带电力载波模组为例进行详细的分析,该模组主控采用的是海思芯片,型号为Hi3921EV100。

xingxingdiandeng69的博客 2万+

数据结构之顺序队列(循环队列)

由于队列有元素出列,front就向后移动,所以队列前面的空间就空了出来。为了更合理的利用空间,人们想了一个办法:将队列的首尾相连接。这样当rear移动到LENGTH时,会再从0开始循环。那当什么时候队列满呢?当rear等于front的时候。可是队列为空的时候也是同样的条件,那不就没法判断了吗?又有人提出了这样的想法:牺牲一个存储空间,front前面不存数据,当rear在front前面的时候就是满了

横济沧海的博客 1147

AppFlow实战:零代码将Dify接入企业微信的完整指南

本文提供了一份零代码将Dify AI应用接入企业微信的完整实战指南。通过使用阿里云AppFlow作为无代码连接器,详细讲解了从获取Dify API密钥、创建企业微信应用到配置自动化流程的全过程,帮助团队快速将AI能力无缝融入日常协作,大幅提升工作效率。

php55的博客 808

数据结构----双向循坏链表的实现(通用)

在实际情况中,基本的链表只能用于单个数据类型,为了更为方便,设计了一个通用的链表,可用于所有数据类型的储存。

2301_79944784的博客 1058

STM32F103 超声波风速风向仪实战:0.1m/s精度风洞标定与OLED显示(附源码)

本文详细介绍了基于STM32F103的超声波风速风向仪设计与实现,通过超声波时间差测量技术实现0.1m/s高精度测量。文章涵盖硬件设计、算法实现、风洞标定及OLED显示等关键环节,提供完整源码,适用于气象监测、风力发电等领域。

weixin_42532938的博客 275

224G PAM-4 通道的 PCB 和封装设计

该行业正在努力实现层厚非常低的 sub-Dk = 3 材料,以及更先进的加工,这将使封装和 PCB 中的透射电镜截止值更高。当回波损耗占主导地位时,我们基本上需要去除沿互连产生阻抗失配的任何元件,就像上面描述的更光滑的铜和更低的 Dk 值一样。第二个影响是传输线阻抗匹配在 56 GHz 范围内的非常高的频率下非常困难的主要原因之一,另一个因素是 Tx 或 Rx 封装/缓冲器中的寄生效应。由于 PCB 和封装中的长度刻度,这是 BGA 上的焊盘、过孔和球等小结构开始在输入阻抗中产生明显偏差的频率范围。

jkh920184196的博客 840

数组是首尾相连的,即相当于数组是一个环的结构,要求从这个环的结构中求出最大的和

解法:当数组是首尾相连时,求连续子数组最大和的方法可以归纳如下: 1.将原数组进行扩充,即假设原数组为{1,2,-3,4,5},则扩充相当于{1,2,-3,4,5,1,2,-3,4,5} 2.利用上述的解法在扩充后的数组进行遍历求其连续子数组的最大和,不过要做一些小改动,即保证子数组的长度在原数组的长度范围之内。这样求出来的结果即是原数组首尾相连后,连续子数组的最大和。 注:当然,此处我们并

martin_liang的专栏 2582

点云结构面智能识别与裂隙网络分析系统

点云结构面智能识别系统摘要 本系统采用深度学习与传统几何算法融合的方法,实现岩石结构面的智能识别与分析。系统包含7个核心模块:点云预处理、结构面识别、分组分割、参数计算、粗糙度分析、裂隙网络生成和可视化。技术路线结合PointNet++深度学习架构与RANSAC、区域生长等传统算法,通过预处理→深度学习识别→几何精修→参数计算→网络构建的流程实现高精度分析。预处理模块实现点云降噪、下采样和法向量估计,深度学习模块基于改进的PointNet++架构进行特征提取和分类。系统支持多种点云格式输入,提供完整的结构面

huanghm88的专栏 345

重拾Java之数据结构一链表

链表是一种存储结构,数据元素的是通过链表中的次序实现的。可以把链表理解为一种加了地址的数组,只是说这个地址并不是连续的。

qq_73752061的博客 957

基于AnimeGAN模型生成宫崎骏风格动漫照片

用于动画风格纹理和线条转换的灰度样式丢失;新颖的颜色重建损失,以保留内容图像的颜色;新的灰度对抗损失防止生成的图像从显示为灰度图像;使用深度可分卷积和反向残块的轻量级生成器,以实现更快的传输。实验表明,AnimeGAN可以对真实世界的照片进行变换场景动画风格的图像与高质量的动画视觉效果和显著优于最先进的风格化方法。# 生成宫崎骏风格图片 model = hub . Module('animegan_v1_hayao_60' , use_gpu = True)images:输入的图片数据。

优快云 精品推荐 3630

Microsoft Forms功能深度解析:企业数据收集与协作的智能利器

Microsoft Forms是微软365生态中的在线表单工具,支持问卷调查、测验和投票创建,具备拖拽式界面、多题型设计和实时数据分析功能。其核心价值在于易用性、跨平台兼容性以及与Teams、SharePoint等微软服务的深度集成,满足GDPR/HIPAA等合规要求。提供表单创建、权限管理、自动化流程(通过Power Automate)和审计日志等功能,适用于金融、医疗、教育等多行业场景。虽然存在逻辑分支有限等约束,但通过案例证明能显著提升数据收集效率(达70-85%)。使用时需注意许可证配置(Busin

xueyunshengling的博客 9125

重拾c++、数据结构与算法应用 原书第二版(一)ty

引用就是别名,是对一个变量重新起一个名字,两个名字是同一个存储空间,函数调用时,可以定义值传参,也可以定义引用传参,真正使用时都是把变量名传过来,内部机制一个是复制值,一个是起别名,可以用常量引用参数来确保传进来的参数不会被误修改。//c++中有重新定义c的某头文件,那么原本c的同名头文件(+.h)就不支持了,如果c++中没有定义c中的某头文件,那么该头文件可以以(.h)或(c某)的方式被c++继承。程序开发基本准则:正确且美,简洁,有注释,易扩展,时间最优,空间最优,通用性强,适用各种平台。

weixin_46387488的博客 259

RT-Thread GD32F4xx HWTIMER驱动

GD32F4xx RT-Thread 硬件定时器驱动调试使用记录

madao1234的博客 1481

重拾数据结构与算法(一)顺序表和单链表的比较

线性查找法 线性查找又称顺序查。基本思路是从第一个记录开始, 逐个比较记录的关键字,直到和给定的K值相等,则查找成功; 若比较结果与文件中n个记录的关键字都不等,则查找失败。 时间复杂度:O(N) 二分查找法 二分查找法又叫折半查找法。比如小时候玩的猜数字游戏 胖虎说:大熊你猜猜我现在心中想的数字是什么。给你一个范围1-100之间,不限次数猜,猜不中就打你一次,看你需要被我打多少次才可...

u010391342的博客 948

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

重拾数据结构(一)— 线性表(顺序存储结构)增删改查 、堆栈的理解

你很懂指针吗,不懂 线性表的概念 关键字的说明 指针的说明与解释 在函数中; 单独作为; 线性表的操作 1、增 2、删 3、改 4、查

one-rabbit的博客 387

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

第一篇博客 —忘记过往 重新奋斗

各位优快云的小伙伴们,大家好。我是一名本科大二的计算机学生,大一大二因为自身的感情原因困住了自己两年,希望这里记录我重新开始学习的生活。尽自己最大的努力弥补自己浪费的时间。希望可以熟练掌握c c++语言,数据结构等知识。能在本科毕业找到一份月薪2w左右的。大家好,我是这是我在csdn的第一篇博客,希望在这里记录我大学剩下两年的学习生活。除去日常的学习外,希望可以每天挤出一个班小时用来刷题。四.每周花费在编程上的时间。

qq_63767285的博客 55

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【重拾算法】01-STL

做程序开发,广度和深度是同样重要的,也许现在的工作中不会直接用上,但是算法、设计模式等等这些底层的知识时候熟练掌握,是我们能不能走得更远的前提,我觉得是时候,再重拾起已经快遗忘的算法,为自己的下一个三年,储备更多的基础知识。

luciozhang的博客 1257

重拾数据结构

重拾数据结构算法与数据结构数组&链表面试题:反转一个单链表&判断链表是否有环栈 Stack、队列Queue面试题:判断括号字符串是否有效如何改变文本的样式插入链接与图片生成一个适合你的列表创建一个表格新的甘特图功能,丰富你的文章UML 图表 最近遇到一些烦心事,想重温些简单的知识,希望可以有新的理解,让自己不要胡思乱想。学习的知识包括Java的基础部分,参考书籍《Java核心技术》卷一 / 卷二;以及以下提到的数据结构。 下图是区块链的一个结构,可以很容易看出上面是一个基础的单向链表结构,下

weixin_45044097的博客 236

【重拾】数据结构之一

前言 久违来一发,回来学校也都两周了,想想也该定下来学学点什么了,突然发现以前学的好像都已经忘的差不多了,而且以前学的也学得云里雾里,所以今天我要重拾数据结构。 何为数据结构 数据是描述客观事实的数和字符的集合,人们通常以数据元素作为数据的基本单位,比如52班的每个学生记录都是一个数据元素数据项是具有独立含义的最小数据单位。 数据结构是指所有数据元素已经数据元素之间的关系数据结构...

dizhengjia6712的博客 198

重拾408

从开发角度重拾408。

weixin_44913826的博客 124

重拾数据结构之数组

数组是一种基本数据结构,用于按顺序存储元素的集合。其中的每个元素都可以使用数组索引来识别。

aZhe_Zz的博客 150

【带你重拾Redis】Redis数据结构及使用场景

Redis数据结构 Redis有着非常丰富的数据结构,这些数据结构可以满足非常多的应用场景, 如果对这些数据结构有一个比较清晰的认知,使用Redis也会更加得心应手。 Redis主要支持以下数据结构: String(字符串) List(双端链表) Hash(Hash字典) Set(无序集合) Sorted Set(有序集合) 数据结构 描述 实现 String 可以存储字符串,整型和浮点型等类型的数据。适合于简单的K-V数据场景。 Redis并没有使用字符数组来实现这一数据类型,而是自己

LoveSummer 1060

重拾数据结构(1)

一、数据结构一览 很好的一篇博客,适合新手和复习的看(深入的话需要多查资料) https://blog.youkuaiyun.com/yeyazhishang/article/details/82353846

weixin_43840373的博客 180

​重拾务中台前端设计》,之后就再也没有写过公开的前端技术文章。虽然我写前端技术文章的初衷是为了分享给更多的人看,

上一次写前端技术博客是2年前,也就是2022年年底,写了一篇《浅谈业务中台前端设计》,之后就再也没有写过公开的前端技术文章。虽然我写前端技术文章的初衷是为了分享给更多的人看,让大家少才一些坑,但是随着时间的推移,有种用爱发电的感觉,所以就停更了。一晃2年过去了,消失的这2年我做了什么呢?不知道大家有没有发现,曾经的一些前端技术博客网站,文章很久都没有更新甚至网站都挂了,比如我收藏夹里的奇舞团(网站挂了),淘系技术博客(网站挂了),腾讯AlloyTeam(上一次更新还是在2021年4月16日),百度的FEX(

qq_39220145的博客 1044
上一篇: 重拾数据结构(二)
下一篇: java两个栈实现一个队列
z529905310
博客等级 码龄10年 11粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值