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

news2024/10/1 17:17:54

线性表(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.coloradmin.cn/o/836646.html

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

相关文章

新人如何高效写 API 文档

什么是 API 文档? 在深入研究 API 文档之前,让我简要解释一下 API 是什么以及它的基本功能。 API 是应用程序编程接口的首字母缩写。 ​ 编辑 切换为居中 通过 API 将设备连接到数据库 无论你是初学者还是高级开发人员,你都会在软件开发…

数学建模-博弈论

张雪峰: 小时候以为长大就好了 长大后才是问题的开始。 人生最重要的就三件事: 学习,工作,结婚。 第一件事:学习 以现在的人生角度去看,其实学习这件事是最容易的,十几年只干好这一件事就行了,我们那时候不…

网络安全 Day26-PHP 简单学习

PHP 简单学习 1. 为什么要学习PHP2. PHP语法3. php 变量4. 字符串数据5. PHP 函数6. 数组 1. 为什么要学习PHP php存量多开源软件多很多安全流程 渗透方法 sql注入基于PHP语言入门简单 2. PHP语法 格式: <?php 内容?>或<?内容?>结尾分号例子<?php phpin…

Qt展示动态波形

Qt展示动态波形 需求描述成品展示实现难点Qt多线程 需求描述 接入串口&#xff0c;配置串口顺序进行接收数据&#xff1b;数据分成两个串口分别传入&#xff0c;使用多线程并发接入&#xff1b;时域数据有两个通道&#xff08;I&#xff0c;Q&#xff09;&#xff0c;分别以实…

flask-session、数据库连接池

flask 自带session---》以cookie的形式放到了浏览器中---》加密 真正的session&#xff0c;是在服务端存储 -django中存在djangosession表中 -flask中&#xff0c;使用第三方&#xff0c;保存在---》redis中---》flask-session 使用步骤 pip install flask-session …

Linux笔记1(系统状态等)

man命令&#xff1a; man name: man section name: man -k regexp: 在 Linux 中&#xff0c;man 命令用于查看命令、函数或配置文件等的手册页&#xff0c;提供了详细的帮助文档。man 是 "manual" 的缩写。man 命令的用法如下&#xff1a; man [选项] [命令名]例如&…

探索编程世界的宝藏:程序员必掌握的20大算法

文章目录 1 引言2 冒泡排序算法&#xff1a;编程世界的排序魔法 &#x1f9d9;‍♀️&#x1f522;3 选择排序算法&#xff1a;排序世界的精确挑选器 &#x1f3af;&#x1f522;4 插入排序算法&#xff1a;排序世界的巧妙插珠者 ✨&#x1f522;5 快速排序算法&#xff1a;排序…

基于人工智能的智能矿山解决方案

什么是智能矿山&#xff1f; 智能矿山是一种运用先进技术和智能化系统来管理和监控矿山运营的概念。它利用传感器、无线通信、数据分析和人工智能等技术&#xff0c;实现对矿山内部各个环节的实时监测、自动化控制和智能决策&#xff0c;从而提高矿山的效率、安全性和可持续性。…

自动化测试的优缺点

围绕测试自动化有很多议论&#xff0c;组织正在进行大量投资以利用测试自动化的好处。测试自动化可以指使用软件工具自动执行测试、将实际结果与预期结果进行比较以及报告差异/错误的过程。实施测试自动化的主要原因之一是减少手动工作和相关风险&#xff0c;同时测试重复性任务…

List集合的对象传输的两种方式

说明&#xff1a;在一些特定的情况&#xff0c;我们需要把对象中的List集合属性存入到数据库中&#xff0c;之后把该字段取出来转为List集合的对象使用&#xff08;如下图&#xff09; 自定义对象 public class User implements Serializable {/*** ID*/private Integer id;/*…

LCD驱动芯片VK1024B兼容HT系列驱动芯片,体积更小

产品型号&#xff1a;VK1024B 产品&#xff1a;VINKA/永嘉微电 封装形式&#xff1a;SOP16 产品年份&#xff1a;新年份 工程服务&#xff0c;技术支持&#xff0c;用芯服务 VK1024概述&#xff1a; VK1024B 是 24 点、 内存映象和多功能的 LCD 驱动&#xff0c; VK1024B …

用Log4j 2记录日志

说明 maven工程中增加对Log4j 2的依赖 下面代码示例的maven工程中的pom.xml文件中需要增加对Log4j 2的依赖&#xff1a; <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.20.0&…

纯小白也能看懂,十分钟帮你快速了解云原生概念

纯小白也能看懂&#xff0c;十分钟帮你了解云原生技术 一、麻烦的一天二、魔法的种子1. Docker2. Kubernetes 三、渐入佳境1. 技术与术语容器化技术DevOps弹性伸缩Sidecar服务网格 2. 组件与框架DockerKubernetesHelmIstioPrometheusJaegerEnvoy 四、前路漫漫 随着云原生相关技…

PHP实践:用openssl打造安全可靠的API签名验证系统

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f3c6;本文已…

clickhouse断电重启故障解决方案

业务场景 公司的一个日志系统用到了clickhouse。一线运维反映说有个生产环境因为异常断电造成服务器重启。在执行日志系统的启动脚本时&#xff0c;一直报clickhouse启动不起来&#xff0c;日志系统无法使用。 问题排查 通过阅读启动脚本代码&#xff0c;以及启动日志系统&a…

【安全测试】Web应用安全之XSS跨站脚本攻击漏洞

目录 前言 XSS概念及分类 反射型XSS(非持久性XSS) 存储型XSS(持久型XSS) 如何测试XSS漏洞 方法一&#xff1a; 方法二&#xff1a; XSS漏洞修复 原则&#xff1a;不相信客户输入的数据 处理建议 资料获取方法 前言 以前都只是在各类文档中见到过XSS&#xff0c;也进…

接口测试前置基础学习

网址结构&#xff08;面试重点&#xff09; 网址就是浏览器请求的地址。 网址组成&#xff1a;&#xff08;6个部分&#xff09; 1 协议http协议&#xff0c;超文本传输协议&#xff0c;https协议&#xff0c;s表示ssl加密。传输更安全。 2 域名&#xff1a;就是ip地址。从…

巨量算数:2023中国家居行业洞察报告(附下载

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 回首过去几年&#xff0c;在疫情反复、地产热度消减、人口出生率下降等各种不利因素影响下&#xff0c;家居行业及其上下游面临极大挑战&#xff0c;整体行业遇冷&#xff0c;市场规模的增速进一步放…

超前端相关的学习网站和一些靠谱的小工具

CSS相关 1. CSS Battle - 在线比拼 CSS https://cssbattle.dev 在线比拼 CSS &#xff0c;一个挺有趣的竞争性游戏&#xff0c;一共有12个级别&#xff0c;需要你用 HTML和 CSS 100%还原它给出的页面&#xff0c;然后再尽量减少代码&#xff0c;你也可以查看全球的排行榜&am…

初级职称评审流程是什么?如何才能评初级职称呢?

职称主要代表社会地位&#xff0c;有高职称的人享有较高的社会经济和福利待遇&#xff0c;与实际技能未必有直接关联。 初级职称评审流程&#xff1a;初级职称评审需要以企业名义参加评审才可以&#xff0c;提交资料到人社局&#xff0c;人社局核实资料和基本情况&#xff0c;确…