数据结构(3)

线性表是多个具有相同特征的数据的有限序列。

前驱元素:A在B前面,称A为B的前驱元素。

后继元素:B在A后面,称B为A的后继元素。

线性表特征:

1.一个元素没有前驱元素,就是头结点;

2.最后一个元素没有后继元素,就是尾结点;

3.除了头结点和尾结点,都具有前驱和后继

线性表分为顺序表和链表。

1.顺序表

顺序表是以数组形式保存在内存一组地址连续的存储单元上,数组之间的逻辑关系代表了物理存储的相邻关系。

 顺序表容量可变:

1.扩容:数组太小,创建两倍容量容纳新元素。

2.缩小:数组元素小于1/4,创建一个原数组容量1/2的新数组存储元素。

顺序表遍历:

遍历一般使用foreach循环,如需支持需要:

1.实现Iterable,重写iterator方法;

2.内部再实现一个SIterator,实现Iterator接口,重写hasnext和next方法。

顺序表底层使用数组实现,数组长度固定,因此设计到了扩容操作,当扩容时,耗时增加,元素越多越明显。

2.链表

顺序表查询很快,但是更新效率低,每一个更新都伴随着大量数据的移动。

链表是在物理上非连续、非顺序的存储结构,物理结构不能直观的表示数据元素的逻辑顺序,数据的逻辑顺序由链表中的指针连接实现的。

链表由一系列结点组成,结点可以在运行时动态生成。

结点类:

public class Node<T> {
//存储元素
public T item;
//指向下一个结点
public Node next;
public Node(T item, Node next) {
this.item = item;
this.next = next;
}
}

3.单向链表:

单向链表由多个结点组成,每个结点由一个数据和指针组成,头结点不存粗数据,指针指向第一个真正存储数据的结点。

4. 双向链表

双向链表由多个结点组成,每个结点由数据和两个指针组成,一个指针指向前驱结点,一个指针指向后继结点。头结点数据和前驱指针为null,后继结点指向第一个真正存储数据的结点。

private class Node{
public Node(T item, Node pre, Node next) {
this.item = item;
this.pre = pre;
this.next = next;
}
//存储数据
public T item;
//指向上一个结点
public Node pre;
//指向下一个结点
public Node next;
}

链表在插入和删除的时间复杂度上和顺序表一样,但也有优势,在物理地址上的不连续,代表不需要扩容,也没有元素之间的交换。

实际程序:查询多,使用顺序表。增删多,使用链表。

5.栈

一种先进后出(FILO)的数据结构。一种只能在一端进行插入和删除操作的特殊线性表。

数据进入栈是压栈,数据出栈是弹栈。

 6.逆波兰表达式

中缀表达式:1+3*2,2-(1+3)

特点:二元运算符总是在两个操作数中间。

逆波兰表达式(后缀表达式):abc-*d+ 对应着a*(b-c)+d 

运算符总书放在操作数后面。

7.队列

队列是基于先进先出(FIFO)的数据结构,是一段插入另一端删除的特殊线性表。先进入的数据,先读取。

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

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

相关文章

湖北黄石三维扫描文物保护修复文物建模3d打印-CASAIM中科广电

三维激光扫描技术在博物馆领域的运用&#xff0c;主要在以下3个方面&#xff1a;文物保护、文物数字化、虚拟博物馆。随着时间的流逝和人类活动的影响&#xff0c;文物不可避免地会受到来自自然或者人为的侵蚀和破坏。由于CASAIM三维激光扫描技术具有不用接触被测量目标、扫描速…

胖小酱之身后事

1&#xff09;小孩杰克就是艾略奥特童年的投影&#xff0c;从小被黑恶势力欺负&#xff0c;同活着却已死去的妈妈-----活死人-----生活在一起&#xff0c;对死亡有种天然的亲近&#xff0c;极端厌恶只会呼吸、大小便的活死人&#xff0c;他认为自己必须埋葬掉他们。小孩杰克在剧…

HTML 和 CSS 来实现毛玻璃效果(Glassmorphism)

毛玻璃效果简介 它的主要特征就是半透明的背景&#xff0c;以及阴影和边框。 同时还要为背景加上模糊效果&#xff0c;使得背景之后的元素根据自身内容产生漂亮的“变形”效果&#xff0c;示例&#xff1a; 代码实现 首先&#xff0c;创建一个 HTML 文件&#xff0c;写入如下…

@RefreshScope静态变量注入

RefreshScope注解通常用于注入实例变量&#xff0c;而不是静态变量。由于静态变量与类直接关联&#xff0c;刷新操作无法直接影响它们。 如果你需要动态刷新静态变量的值&#xff0c;一种可行的方案是使用一个通过Value注解注入的实例变量&#xff0c;并在该实例变量的getter方…

<c++开发>通信工具 -之-SOME/IP移植部署 第一篇文章

&#xff1c;c开发&#xff1e;通信工具 -之-SOME/IP移植ubuntu部署 第一篇文章 一 前言 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种通信协议&#xff0c;主要用于嵌入式系统和车载网络中的服务导向通信。SOME/IP是AUTOSAR&#xff08;AUTomotive Open …

【常见决策树算法逻辑理解以及代码实现(2)】C4.5 逻辑理解(增益率)

这个是全部文档目录 实例数据和前文请看上一篇 增益率:排除子集数量对信息增益的影响 上文中求信息增益中,我们是忽略掉编号这一列的,因为按照编号属性进行计算信息增益,会划分17个子集,每个子集的信息熵Ent均为0,则信息增益Gain就是D的信息熵Ent G a i n ( D , 编号 ) E n…

TouchGFX之DMA2D

Chrom-ART (DMA2D)图形加速器能够传输来自存储器的部分图像数据&#xff0c;并将其放入或先混合后再放入帧缓存。 Chrom-ART可从内部或外部存储器读取数据。 同样&#xff0c;它可以写入内部或外部存储器。 在绘制图形时可使用此功能&#xff0c;以显著提高显示性能&#xff0c…

React基础入门之虚拟Dom

React官方文档&#xff1a;https://react.docschina.org/ 说明 重要提示&#xff1a;本系列文章基础篇总结自尚硅谷课程&#xff0c;且采用类式写法&#xff01;&#xff01;最新的函数式组件写法见高级篇。 本系列文档旨在帮助vue同学更快速的学习react&#xff0c;如果你很…

若依项目的运行详细步骤

目录 一、项目的解读与获取 二、项目的运行 后端步骤(ruoyi-admin) &#xff08;一&#xff09;导入若依的2个SQL文件 版本建议 &#xff08;二&#xff09;Redis的配置 &#xff08;三&#xff09;启动后端 前端步骤(ruoyi-ui) 版本建议 &#xff08;一&#xff09;…

open suse 15.5(任意版本) 使用阿里云的repo

一、shell suse 的包管理工具叫 zypper. zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/leap/15.5/repo/oss/ openSUSE-15.5-Oss zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/leap/15.5/repo/non-oss/ openSUSE-15.5-Non-Oss …

vscode安装minGW

引用来源 Visual Studio Code运行C程序&#xff0c;配置MingGW遇到问题&#xff0c;the file has been downloaded incorrectly MinGW-w64安装教程——著名C/C编译器GCC的Windows版本 VS Code 从菜鸟安装到编写第一个“Hello World&#xff01;——&#xff08;以C语言为例)

数据结构—树表的查找

7.3树表的查找 ​ 当表插入、删除操作频繁时&#xff0c;为维护表的有序表&#xff0c;需要移动表中很多记录。 ​ 改用动态查找表——几种特殊的树 ​ 表结构在查找过程中动态生成 ​ 对于给定值key ​ 若表中存在&#xff0c;则成功返回&#xff1b; ​ 否则&#xff0…

监控 FTP 服务器

文件传输协议 &#xff08;FTP&#xff09; 用于在 TCP/IP 网络中的服务器和客户端之间传输文件&#xff0c;它是一种标准协议&#xff0c;广泛用于在各个垂直行业的组织之间从集中位置存储和分发数据。FTP协议的其他一些安全版本如下&#xff1a; SSH 文件传输协议 &#xff…

《论文阅读18》 SSD: Single Shot MultiBox Detector

一、论文 研究领域&#xff1a; 2D目标检测论文&#xff1a;SSD: Single Shot MultiBox Detector ECCV 2016 数据集 论文链接论文github 二、论文概要 SSD网络是作者Wei Liu在ECCV 2016上发表的论文。对于输入尺寸300x300的网络 使用Nvidia Titan X在VOC 2007测试集上达到74…

Datawhale Django后端开发入门 Vscode TASK02 Admin管理员、外键的使用

一.Admin管理员的使用 1、启动django服务 使用创建管理员之前&#xff0c;一定要先启动django服务&#xff0c;虽然TASK01和TASK02是分开的&#xff0c;但是进行第二个流程的时候记得先启动django服务&#xff0c;注意此时是在你的项目文件夹下启动的&#xff0c;时刻注意要执…

React源码解析18(11)------ 实现多次setState的批处理

摘要 在React中&#xff0c;如果涉及到了多次setState&#xff0c;组件render几次。setState是同步的还是异步的。这是一个很常见的面试题。 而本篇文章&#xff0c;就是主要实现React中&#xff0c;对于这部分的性能优化&#xff0c;我们称之为批处理。例如当我有下面的JSX。…

微信小程序 echarts 画多个横向柱状图

然后是json {"usingComponents": {"ec-canvas": "../../common/ec-canvas/ec-canvas"},"navigationBarTitleText": "主题活动" } ec-canvas获取方式 在链接里下载代码 然后copy ec-canvas文件夹到自己的项目 https://gi…

会计资料(借贷记账法、试算平衡)

6.借贷记账法 这样的格式是会计学家提出的。 6.1 借贷记账法的详细使用 这里要把会计的六大分类搞明白&#xff0c;才能够使用借贷记账法 6.2 借贷记账法的记账规则 6.3 借贷记账法下的账户与会计分录 6.4 会计分录的介绍 这里一笔会计分录只能写一笔经济业务&#xff0c;或者…

【AUTOSAR应用层建模】-AUTOSAR Blockset工具箱

【AUTOSAR应用层建模】-AUTOSAR Blockset工具箱 Autosar Blockset工具箱是Matlab/Simulink发布的针对汽车电子控制领域进行Autosar 软件组件设计的工具箱,本文对该工具箱进行浅显的介绍,后续有机会将会进行具体的展开。 Autosar Blockset工具箱官网:AUTOSAR Blockset 提示…

使用 Ansible Galaxy 安装角色

使用 Ansible Galaxy 安装角色 使用 Ansible Galaxy 和要求文件 /home/curtis/ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /home/curtis/ansible/roles &#xff1a; http://rhgls.area12.example.com/materials/haproxy.tar 此角色的名称应当为 balancer …