数据结构期末总结

news2024/12/27 10:32:26

数据结构绪论

数据结构的概念

  • 数据结构 : 数据结构是相互之间存在一种或多种特定关系的数据元素的集合
  • 数据结构研究的问题 :数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科
  • 抽象数据类型ADT: 定义ADT格式不唯一 在这里插入图片描述
  • 例题 在这里插入图片描述
    在这里插入图片描述

数据结构的三要素

  • 逻辑结构:是对元素之间的逻辑关系
  • 物理结构:是数据结构在计算机中的表示和实现,又称“存储结构
  • 数据的运算:施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,运算的实现是针对存储结构的。 在这里插入图片描述
  • 例题 在这里插入图片描述
  • 逻辑结构的四大分类: 根据数据元素之间关系的不同特性,分为集合、线性结构、树状结构、图状或网状结构。 在这里插入图片描述
  • 储存结构:数据的存储结构又称为物理结构。在物理结构表示数据结构中,主要研究数据元素的存储和关系存储,别称为数据元素的映像关系的映像
  • 物理结构:对于任意一个关系,可分为顺序存储、链式存储、索引存储、散列存储 在这里插入图片描述
  • 例题 在这里插入图片描述
    在这里插入图片描述

在C语言中的数据类型

在这里插入图片描述

  • 数组:有序的元素序列 在这里插入图片描述

  • 指针:一个变量的地址就称为该变量的指针。 指针就是地址,而地址就是内存单元的编号。

  • 取地址符&:取变量地址的符号。

  • 结构体:结构体就是将不同类型的数据组合合成一个有机的整体,以便于引用。

算法与算法分析

  • 算法的五大重要特性
    1、有穷性:一个算法必须总是有穷的。
    2、确定性:每一条指令必须有确切的含义。
    3、可行性
    4、输入
    5、输出
  • 例题 在这里插入图片描述

1、算法设计的要求
1、正确性
2、可读性
3、健壮性
4、效率与存储量需求

2、算法效率的度量
时间复杂度:一个语句的频度是指该语句在算法被重复执行的次数。T(n)=O(f(n))
空间复杂度:一个语句的频度是指该语句在算法被重复执行的次数。S(n)=O(f(n))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 六种常用算法时间复杂度的大小比较
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

线性表

线性表的定义

基本概念:是一个有限序列,表中各个元素是相继排列的,且每两个相邻元素之间都有直接前驱和直接后继的逻辑关系。在这里插入图片描述
在这里插入图片描述
线性表的四大特点
1、存在唯一的第一个元素和最后一个元素。
2、除第一个元素外,其它元素有且仅有一个直接前驱;第一个元素没有直接前驱。
3、除最后一个元素外,其它元素有且仅有一个直接后继;最后一个元素没有直接后继。
4、线性表中的每一个元素都具有相同的数据类型,且不能按子表那样再分割。
在这里插入图片描述

顺序表

顺序表的定义和特点
在这里插入图片描述

单链表

当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。
在这里插入图片描述
带头结点的单链表
头指针head指向头结点,头结点的值域不含任何信息,从头结点的后继结点开始存储数据信息。
头指针head始终不等于NULL,head->next等于NULL时,链表为空。
不带头结点的单链表
头指针head直接指向开始结点。
当head等于NULL时,链表为空。
链表是一个动态的结构,不需要分配空间。
在这里插入图片描述
单链表的插入
表头插入
在这里插入图片描述
表间插入
在这里插入图片描述
表头删除
在这里插入图片描述
表间删除
在这里插入图片描述头插法
在这里插入图片描述
尾插法
在这里插入图片描述

循环链表和双向链表

循环链表
最后一个结点的指针域的指针又指回第一个结点的链表。
和单链表的差别在于,判别链表中最后一个结点的条件不再是“后继是否为空”而是“后继是否为头结点”。
双向链表
每个数据结点都有两个指针,分别指向直接后继和直接前驱。
在这里插入图片描述
可以进行随机访问是顺序表
静态链表
借助数组来描述线性表的链式存储结构,这里的指针是结点的相对地址(数组下标)。
与顺序表一样,静态链表需要预先分配一块连续的存储空间。
总结
在这里插入图片描述
在这里插入图片描述

栈和队列

队列

数组

数组的类型定义

数组的顺序表示和实现

稀疏矩阵的压缩存储

树与二叉树

树的基本概念

二叉树

树、森林

图的基本概念

图的遍历

图的基本应用

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

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

相关文章

JWT漏洞

JWT介绍 1.1 JWT概念 JSON Web Token(JWT) 是一个开放标准。它定义了一种紧凑而独立的方法,用于在各方之间安全地将信息作为JSON对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用secret(HMAC算法)或使用“…

SwinTransformer细节总结

SwinTransformer可以看成是披着ResNet外壳的vision transformer,swin 就是两个关键词:patch 多尺度。下面结合code来说一些重点的细节: 总览图 这里W-MSA缩写是window-multi head self attention,SW-MSA缩写是shifted window-mu…

JDK 8到JDK 17都有哪些吸引人的特性?

从JDK 8到JDK 17,Java语言和平台经历了许多变化和改进,引入了许多吸引人的新特性和功能。在这里,给大家列举一些我认为最有趣或最有用的新特性,并会以实际使用案例为大家展示新用法。希望大家多多点赞关注!&#xff01…

C语言的switch case函数

文章目录 1 函数结构2 执行过程3 break关键字4 补充说明参考 1 函数结构 switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下: switch(表达式){ case 整型数值1: 语句 1; case 整型数值2: 语句 2; …

极致呈现系列之:Echarts词云图的数据共振

目录 什么是词云图词云图的特性及应用场景词云图的特性词云图的应用场景 Echarts中词云图的常用属性vue3中创建词云图 什么是词云图 词云图(Word Cloud)是一种以文字的形式展示数据的可视化图表。它通过将各个文字按照一定的规则排列,并根据…

车载软件架构 —— 闲聊几句AUTOSAR OS(六)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最…

centos版本的EDA虚拟机搭建2

这次教程主要介绍centos的必备软件的安装。 0、参考博客 1、VMware下CentOS 7虚拟机的安装 2、搭建属于自己的数字IC EDA环境(二):搭建Centos的基本使用环境和工具 3、cenos7基本配置 1、git安装 sudo yum install -y git2、gvim安装 su…

从大型语言模型LLM走向人工通用智能AGI的改进方向(public)

从大型语言模型走向人工通用智能AGI 返回论文和资料目录 1.导读 这篇博客主要基于《Sparks of Artificial General Intelligence: Early experiments with GPT-4》文中第9和第10节、以及我自己对当前LLM和AGI的理解。给出大型语言模型走向AGI时 改进的方向。 2.14个问题及改…

详解:阿里邮箱_阿里企业邮箱_阿里邮箱企业版

阿里邮箱是阿里云自主研发的,基于飞天平台自主研发的云原生分布式邮箱系统,阿里邮箱提供免费版、标准版、尊享版和集团版,企业邮箱版本不同支持的账号数也不同,共享网盘容量和个人网盘容量均不同,阿里云百科来详细介绍…

工厂方法模式(Factory Method)

别名 虚拟构造函数(Virtual Constructor)。 定义 工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。 前言 1. 问题 假设你正在开发一款物流管理应用。最初版本只能处理卡车运…

【85 backtrader-cs因子测试的一些高级技巧-2】使用cython、c语言和c++加速某些函数的计算

在上一篇文章:【85 backtrader-cs因子测试的一些高级技巧】使用numba加速某些函数的计算中,使用了numba改进某些函数,实现加速,在这一篇文章中,尝试接着上一篇文章的主题,继续尝试用cython,c语言和c++尝试改进decayliear函数的计算速度。 结论: 从图上似乎可以得到下面…

Java程序性能优化技巧

1、慎用异常 在Java软件开发中,经常使用 try-catch 进行错误捕获,但是,try-catch 语句对系统性能而言是非常糟糕的。虽然在一次 try-catch中,无法察觉到它对性能带来的损失,但是,一旦try-catch被应用于循环…

从零开始 verilog 以太网交换机(五)帧合路单元的设计与实现

从零开始 verilog 以太网交换机(五)帧合路单元的设计与实现 🔈声明: 😃博主主页:王_嘻嘻的CSDN主页 🧨 从零开始 verilog 以太网交换机系列专栏:点击这里 🔑未经作者允许…

07-歌词滚动效果

现在学习的代码工作中不一定会需要,如果有,也已经做成了产品和库, 前端重点是创造,面试官考验你的能力是会提出最刁钻的问题给你的。 项目效果 原生JS效率是最高的,框架只是提高代码的可读性 favico图标添加 两种方…

一个工具类让你彻底解决bean深拷贝

深拷贝是我们在代码开发当中经常需要使用到的,但是市面上的对象拷贝方法,比如spring自带的,或者其他工具类带的对象拷贝,大部分都是浅拷贝,根本无法满足咱们的业务需求,我们就只能对里面的引用对象进行专门…

guacamole 纯web rdp预研:web应用程序部分

文章目录 web rdp预研 web应用程序部分预研目的相关基础Web应用结构(框架)配置tomcat运行web项目与前端交互原理问题整理Java web基础知识Java web调试预研结论 web rdp预研 web应用程序部分 ⭐️来自很多年前的笔记,只是一个归档&#xff0…

面向对象【成员变量与局部变量、方法声明与作用】

文章目录 成员变量局部变量成员变量与局部变量的区别 方法方法的作用方法的声明 成员变量 Java中的成员变量是指类中声明的变量,也称为实例变量或属性。它们与方法一样属于类的成员,不同之处在于,它们存储在对象(堆)中而不是栈中,…

基于灰色预测模型的负荷预测(matlab程序)

0.代码链接 基于灰色预测模型的负荷预测(matlab程序)资源-CSDN文库 1.简述 灰色预测是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来…

python:并发编程(二十六)

前言 本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇八,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并…

ADAS(高级驾驶员辅助系统)

什么是 ADAS ADAS —— 高级驾驶员辅助系统,包含一系列硬件和软件组件,自动起到驾驶员的多项作用。目前,常见的车辆 ADAS 功能包括自适应巡航控制、盲点检测、变道检测(车道偏离警告系统)、自动车道跟随和自动紧急制动、泊车。 L0到L2称为AD…