常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)

线性表(Linear List) 

    1.什么是线性表

    2.线性表的特点

    3.线性表的基本运算

顺序表

    1.什么是顺序表

    2.时间复杂度:

链表

    1.什么是链表

    2.单向链表

    3. 双向链表

    4.ArrayList和LinkedList的使用

栈Stack 

    1.什么是栈 

    2.栈的基本方法

队列Queue

    1.什么是队列 

    2.队列的特点

    3.队列的基本方法

二叉树

    1.什么是二叉树

    2.特别二叉树

线性表(Linear List)

1.什么是线性表

     零个或多个数据元素的有限序列。

2.线性表的特点

     有且仅有一个开始结点,无直接前趋,有且只有一个直接后继

     有且仅有一个结束结点,有且只有一个直接前趋,无直接后继。

     内部结点都有且只有一个直接前趋和一个直接后继

 3.线性表的基本运算

       initList:初始化操作,建立一个空的线性表
       listEmpty:若线性表为空,返回true,否则返回false
       clearList:将线性表清空
       getElem(index):将线性表中第index个位置的元素值返回
       locateElem(value):在线性表中查找与value值相等的元素,查找成功则返回该元素在线性表中的索引,否则返回-1
       listInsert(index,value):在线性表中第index个位置插入value
       listDelete(index):删除线性表第index个位置元素,返回该值
       listLength:返回线性表实际存储元素个数,即长度
       getAll:遍历线性表

顺序表

1.什么是顺序表

    顺序表是按照顺序存储方式存储的线性表,是一种特殊的线性表。

2.时间复杂度:

    查询时间复杂度为O(1);

    插入和删除为O(n)。

链表

1.什么是链表

    链表是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。链表可分为单向链表和双向链表。

2.单向链表

     一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。

3. 双向链表

 4.ArrayList和LinkedList的使用

      以下情况使用 ArrayList :

          频繁访问列表中的某一个元素。

          只需要在列表末尾进行添加和删除元素操作。

       以下情况使用 LinkedList :

          需要通过循环迭代来访问列表中的某些元素。

          需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

栈Stack

1.什么是栈

     栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

     入栈和出栈。

2.栈的基本方法

1boolean empty() 
测试堆栈是否为空。
2Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。
3Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。
4Object push(Object element)
把项压入堆栈顶部。
5int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。 

 队列Queue

1.什么是队列

     队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

 2.队列的特点

      1.只能在队首进行删除操作,在队尾进行插入操作

      2.先进先出,后进后出。

3.队列的基本方法

插入add(e)offer(e)
删除remove()poll()
查看element()peek()

二叉树

1.什么是二叉树

     二叉树就是一个根节点最多有左右两个孩子结点。

2.特别二叉树

     满二叉树:顾名思义,就是所有结点都是满的,有左有右。

     完全二叉树:完全二叉树是由满二叉树而引出来的,若一棵二叉树至多只有最下面两层的结点的度数可以小于2,并且最下层的结点都集中在该层最左边的若干位置上,则此二叉树为完全二叉树。

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

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

相关文章

机器学习入门之 pandas

pandas 有三种数据结构 一种是 Series 一种是 Dataframe import pandas as pd import numpy as np score np.random.randint(0,100,[10,5])score[0,0] 100Datascore pd.DataFrame(score)subject ["语文","数学","英语","物理&quo…

Day01-作业(HTMLCSS)

作业1:通过HTML的标签及CSS样式,完成如下企业简介html页面的制作 A. 最终效果如下: B. 文字素材如下: 企业简介传智教育(股票代码 003032),隶属江苏传智播客教育科技股份有限公司,注册资本4亿元&#xff0…

918. 环形子数组的最大和;2531. 使字符串总不同字符的数目相等;1238. 循环码排列

918. 环形子数组的最大和 核心思想:其实这题不加环形很好做,就是一个动态规划或者贪心就能够解决。加了环形我们应该怎么考虑呢,无非就是两种,第1种是子数组只包含首尾的一个,我们直接求子数组的最大连续和即可&#…

服务器运行python程序的使用说明

服务器的使用与说明 文章目录 服务器的使用与说明1.登录2.Python的使用2.1 服务器已安装python32.2 往自己的用户目录安装python31.首先下载安装包2.解压缩3.编译与安装 2.3 新建环境变量2.4 测试 3 创建PBS作业并提交 1.登录 windowsr打开运行命令窗口,在运行框中…

Leaflet.Control.Opacity 控制图层的透明度

最新有一个需求,能动态的控制Leaflet.js 地图图层的透明度,官网文档: https://leafletjs.com/reference.html#gridlayer-setopacity 一直有个setOpacity方法,我以为拿来就能使呢,其实不行。后来找到一个日本人开发的demo: 右侧Co…

2023值得关注的人工智能7大发展趋势

随着人工智能技术的不断创新和应用,我们可以看到人工智能在各个领域的应用越来越广泛。其中,有一些趋势特别值得我们关注。 1)深度学习技术的发展 深度学习技术在图像识别、语音识别、自然语言处理等领域表现出色,随着硬件计算能…

部署安装私服-Gitlab

一、国内的gitlab是极狐 www.gitlab.cn 国服 www.github.com 国际服 二、国服的gitlab蛮适合中国国情的 1.提交申请可以获得30天的订阅版服务,有需要的话可以先提交一下。订阅后功能多一些。 Gitlab中文官网下载_GitLab免费下载安装_极狐GitLab免…

计算机视觉:替换万物Inpaint Anything

目录 1 Inpaint Anything介绍 1.1 为什么我们需要Inpaint Anything 1.2 Inpaint Anything工作原理 1.3 Inpaint Anything的功能是什么 1.4 Segment Anything模型(SAM) 1.5 Inpaint Anything 1.5.1 移除任何物体 1.5.2 填充任意内容 1.5.3 替换任…

【设计模式——学习笔记】23种设计模式——访问者模式Visitor(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入要求传统方案 介绍基本介绍应用场景登场角色尚硅谷版本《图解设计模式》版本 案例实现案例一实现拓展 案例二(个人感觉这个案例较好)实现分析拓展一拓展二拓展三 总结额外知识双重分发 文章说明 案例引入 要求 测评系统需求:将观众分为男人和女人…

学了一个礼拜 JavaScript 为什么还是学不会?

前言 首先从你的描述里面我先以我的主观臆断来猜测一下你是没有任何编程的基础的,Js按理来说在各语言中并不是非常难学,当然如果你是纯新手入门,那么确实前期需要时间来沉淀一下语法,一个礼拜的话,按理来说应该是在沉…

T31开发笔记:librtmp拉流测试

若该文为原创文章,转载请注明原文出处。 T31使用librtmp拉流并保存成FLV文件或H264和AAC文件。 librtmp编译在前面有教程,自行编译。 实现的目的是想要获取获取rtmp的AAC流并播放,实时双向对讲功能。 一、硬件和开发环境 1、硬件&#xff1…

Linux C++ 链接数据库并对数据库进行一些简单的操作

一.引言(写在之前) 在我们进行网络业务代码书写的时候,我们总是避免对产生的数据进行增删改查,为此,本小博主在这里简历分享一下自己在Linux中C语言与数据之间交互的代码的入门介绍。 二.代码书写以及一些变量和函数的…

Vue3 nodejs 安装和配置---vue3教程一

文章目录 前言1、nodejs安装2、配置缓存路径:3、 阿里镜像cnpm使用4、 yarn安装5、配置nodejs国内镜像6、查看各个版本7、node npm yarn概念8、nodejs 和vue 关系外传 前言 本人主做后端Java,以前搞全栈开发是,还没有vue,rect等前端框架&…

MGRE综合

实验 一、实验思路 1.先按照上图配置IP地址及环回 2.写缺省使公网可通 3.让R1、R4、R5每台路由器均成为中心站点形成全连网状结构拓扑 4.让R1成为中心站点R2R3为分支站点 5.分区域宣告ospf之后更改ospf在虚拟接口Tunnel工作方式为broadcast及让R1 当选DR 二、上虚拟机操作…

[CKA]考试之一个 Pod 封装多个容器

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 创建一个Pod,名字为kucc1,这个Pod包含4容器&#xff…

《向量数据库指南》——腾讯云向量数据库Tencent Cloud Vector DB正式上线公测!提供10亿级向量检索能力

8月1日,腾讯云向量数据库(Tencent Cloud Vector DB)已正式上线公测。在腾讯云官网上搜索“向量数据库”,就可以正式体验该产品。 腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、文本图像检索、自然语言处理等 AI 领域。…

Vue的 hash 模式与 history 模式

为了能够在改变视图的同时,不向后端发出网络请求。浏览器提供了 hash 模式与 history 模式。 而 vue 中的路由器就是利用了这两种模式,来实现前端路由的。 路由器的 hash 模式: 一、在 router 目录下的 index.js 文件中,通过 m…

JVM 学习—— 类加载机制

前言 在上一篇文章中,荔枝梳理了有关Java中JVM体系架构的相关知识,其中涉及到的有关Java类加载机制的相关知识并没有过多描述。那么在这篇文章中,荔枝会详细梳理一下有关JVM的类加载机制和双亲委派模型的知识,希望能够帮助到有需要…

时间复杂度接近O(n)的三种排序算法

1.桶排序 桶排序,顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有 序的桶里,每个桶内的数据再单独进行排序。桶内排完序之后,再把每个桶内的数据按照顺序依次 取出,组成的序列就是有序的了。 …

使用vue creat搭建项目

一、查看是否安装node和npm(显示版本号说明安装成功) node -v npm -v 显示版本号说明安装成功,如果没有安装,则需要先安装。 二、安装vue-cli脚手架 查看安装的版本(显示版本号说明安装成功) vue -V 三…