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

线性表(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,并且最下层的结点都集中在该层最左边的若干位置上,则此二叉树为完全二叉树。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【果树农药喷洒机器人】Part2:机器人变量喷药系统硬件选型

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

【ChatGPT 指令大全】怎么使用ChatGPT辅助程式开发

目录 写程式 解读程式码 重构程式码 解 bug 写测试 写 Regex 总结 在当今快节奏的数字化世界中,程式开发变得越来越重要和普遍。无论是开发应用程序、网站还是其他软件,程式开发的需求都在不断增长。然而,有时候我们可能会遇到各种问题…

C语言数据类型

C语言具有多种数据类型,用于存储不同类型的数据。大体可以分为基本数据类型和派生数据类型两大类。 一、基本数据类型 整型(Integer): 用于表示整数值,包括int、short、long和long long等类型,可以有不同…

AI:03-基于深度神经网络的低空无人机目标检测图像识别的研究

文章目录 数据集收集与预处理深度神经网络模型设计模型训练与优化目标检测与图像识别代码实现:实验结果与分析讨论与展望低空无人机的广泛应用为许多领域带来了巨大的潜力和机会。为了实现无人机的自主导航和任务执行,准确的目标检测和图像识别是至关重要的。本文旨在研究并提…

软件外包开发的VUE开发框架

Vue.js(通常简称为Vue)是一个流行的渐进式JavaScript框架,用于构建用户界面。它的核心库专注于视图层,但也可以结合其他库和工具来构建完整的单页面应用(SPA)。以下分享Vue.js的开发框架和特点,…

剑指offer-1.1C++

sizeof空类问题 问:定义一个空的类型,里面没有任何成员变量和成员函数。对该类型求sizeof,得到的结果是多少? 答:1 问:为什么不是0? 答:空类型的实例中不包含任何信息&#xff0…

小说推文怎么做详细教程。小说推文项目拆解及分享

科思创业汇 大家好,这里是科思创业汇,一个轻资产创业孵化平台。赚钱的方式有很多种,我希望在科思创业汇能够给你带来最快乐的那一种! 如何制作小说推文的详细教程! 我做自媒体已经五年了,在自媒体行业也…

STM32CubeMX之freeRTOS消息队列

创建一个消息队列,两个发送任务,一个接受任务 发送任务一:等待时间为0 发送任务二:等待时间为最大 接受为0 简单来说就是: 任务一:一个普写 一个死写 一个普读 任务二:创造队列 一个普写 …

什么是React?React与VU的优缺点有哪些?

什么是React?什么是VUE? 维基百科上的概念解释,Vue.js是一个用于创建用户界面的开源MVVM前端JavaScript框架,也是一个创建单页应用的Web应用框架。Vue.js由尤雨溪(Evan You)创建,由他和其他活跃…

Scractch3.0_Arduino_ESP32_学习随记_IO中断(六)

IO中断 目的器材程序联系我们 目的 ESP32 IO中断的使用。 中断: 当IO中断事件发生时,MCU将优先执行中断的程序。 打个比方: 你正在读一本书,突然手机收到一条紧急消息。你不想错过这个重要的消息,所以你立即停下手中的…

MySQL高阶知识点

MySQL 文章目录 MySQLchar和varchar的区别视图视图的特点 存储过程存储过程的特点 触发器触发器的特点 MySQL引擎索引为什么要有索引呢?什么是索引索引的优势索引的劣势索引类型索引种类组合索引最左前缀原则索引创建原则B树和B树的区别数据库为什么使用B树而不是B树…

伪类和伪元素有何区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 伪类(Pseudo-class)⭐ 伪元素(Pseudo-element)⭐ 区别总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前…

原始套接字编程(AF_PACKET+SOCK_RAW)模拟一个PING

1. 背景 最近看一个客户的代码片段,发现他在用原始套接字编程,一般学习套接字都是流式套接字和数据报套接字,本来也不是搞网络的,原始套接字了解得很少,借着这次机会,自己来学习一下原始套接字编程。 2. …

Nevron Vision for .NET Crack

Nevron Vision for .NET Crack NET Vision是一个用于创建具有数据可视化功能的强大数据表示应用程序的套件。该套件具有用于.NET的Nevron Chart、用于.NET的Nevron Diagram和用于.NET的Nevron User Interface。精心设计的对象模型、众多功能和高质量的演示使复杂数据的可视化变…

IntelliJ IDEA如何重新弹出git身份验证窗口

1、点击File菜单—>点击Settings—>点击Appearance & Behavior—>点击System Settings—>点击Passwords—>选中Do not save, forget passwords after restart—>点击Apply—>点击OK,如下所示: 2、重启IntelliJ IDEA—>通过g…

若依管理系统后端将 Mybatis 升级为 Mybatis-Plus

文章目录 说明流程增加依赖修改配置文件注释掉MybatisConfig里面的Bean 代码生成使用IDEA生成代码注意 Controller文件 说明 若依管理系统是一个非常完善的管理系统模板,里面含有代码生成的方法,可以帮助用户快速进行开发,但是项目使用的是m…

Linux 编译CEF源码详细记录

Linux CEF(Chromium Embedded Framework)源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 Windows平台参考&#…

包装类+初识泛型

目录 1 .包装类 1.1 基本数据类型对应的包装类 1.2.1装箱 ​1.2.2拆箱 2.初识泛型 2.1什么是泛型 2.2泛型类 2.3裸类型 2.4泛型的上界 2.5泛型方法 1 .包装类 基本数据类型所对应的类类型 在 Java 中,由于基本类型不是继承自 Object ,为了在泛型…

腾讯云服务器地域有什么区别怎么选择?

腾讯云服务器地域有什么区别?怎么选择比较好?地域选择就近原则,距离地域越近网络延迟越低,速度越快。关于地域的选择还有很多因素,地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

C++11语法笔记

文章目录 一.类中新增的默认成员函数:移动赋值和移动构造二.lambda表达式三.包装器bind函数 一.类中新增的默认成员函数:移动赋值和移动构造 二.lambda表达式 三.包装器 bind函数