数据结构学习总结(1、2章)

数据结构入门学习之数据结构学些什么? 首先在学习之前,我们先要了解通常计算机在解决一个问题具体有哪些步骤,见下图 而第一步将具体问题抽象为数学模型的实质是: 而这一步正是我们数据结构所学习的内容。 早期计算机只能做一些 ... 阅读详情

第1章、绪论

一、什么是数据结构:

1.数据: 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

2.数据元素: 数据元素是数据的基本单位,也叫做节点或记录。在计算机程序中通常作为一个整体进行考虑和处理。(一个数据元素可由若干个数据项组成.)

3.数据对象: 数据对象是性质相同的数据元素的集合,数据的一个子集。

4.数据结构: 相互之间存在一种或多种特定关系的数据元素的集合,主要包
括三方面的内容:(逻辑结构、存储结构、数据的运算)。

二、数据的逻辑结构:

指数据元素之间的逻辑关系,它与数据的存储无关,是独立于计算机的。主要是分为(线性结构、非线性结构)两大类。

①线性结构:结构中的数据之间只存在一对一的关系,主要代表有(线性表、队列、栈、数组)。
它有四个基本特征:第一个元素,最后一个元素,前驱元素,后继元素
②非线性结构:存在着一对多的关系,它又可以多对多的关系,主要有(集合、树、图)。

三、数据的存储结构:

1.顺序存储结构: 把逻辑上相邻的元素存储在物理位置也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

2.链式存储结构: 不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

3.索引存储结构: 在存储元素信息的同时,还建立附加的索引表。

4.哈希存储结构: 根据元素的关键字直接计算出该元素的存储地址。

四、算法的重要特征:
有穷性,确定性,可行性,输入,输出。

优秀算法的标准:准确性,可读性,健壮性,效率与低存储量需求。

五、算法效率的度量:

①时间复杂度:

一般情况下,算法中基本操作的重复次数作为问题规模 n 的某个函数 f(n),算法的时间度量记作 T(n)=O(f(n)),表示随着问题规模 n 的增大,算法执行时间增长率和 f(n)的增长率相同,称为时间复杂度。(时间复杂度取决于:问题的规模、待处理的数据初态)
②空间复杂度:

S(n)定义为该算法所耗费的存储空间,是问题规模 n 的函数。

规律: O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<…<O(nk)<O(2n)<O(n!)

第2章、线性表

线性表是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(大部分线性表)

特点:

1.除第一个元素外,每一个元素都有一个直接前驱元素,除最后一个元素外,每一个元素都有一个直接后驱元素

2.数据元素是组成数据的基本单位,是数据集合的个体,在计算机中通常作为整体进行处理,也称结点或记录。

3.数据项是有独立含义的数据最小单位,也称项或字段数据对象是性质相同的数据元素的集合,是数据的一个子集

4.线性表由有限个元素组成,且由同类型数据元素组成,每一个数据元素都属于同一个数据对象

一、顺序表
用一段地址连续的存储单元依次存储线性表的数据元素。顺序存储结构在逻辑结构和物理存储结构中都是依次序互相紧挨着。每个数据元素的地址=首元素的地址+一个该数据类型所占空间大小*数组下标。

优点:查询速度快,时间复杂度为O(1)

缺点:1.插入元素速度慢,时间复杂度为O(n)2.表中元素个数需要提前定义

时间复杂度:

不论数据元素量N有多大,只需要get(i)一次就拿到对的元素,所以时间复杂度为O(1)。

每一次插入,都需要把i的位置后面的元素移动一次,随着元素N的增大,移动的元素也越多,时间复杂度为O(n)。

每一次删除,都需要把i的位置后面的元素移动一次,随着元素的N的增大,移动的元素也越多,时间复杂度O(n)。

二、链表

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。它不像顺序表那样连续存储元素,而是在每一个节点里存到下一个节点的指针。

优点:内存空间不连续,头插头删效率高,没有空间限制,不会溢出,可以存储很多元素
缺点:不支持随机访问,查找效率低,需遍历查找

2.1单链表:单链表是链表的一种,它是由多个结点组成的,每一个结点由一个数据域和一个指针域组成,数据域是用来存储数据,指针域是用来指向下一个结点,头结点的数据域不存储数据,尾结点的指针域是空的。

2.2双链表

双链表也是链表的一种,也是由多个结点组成的,每一个结点由一个数据域和两个指针域组成的,数据域是用来存储数据,两个指针域是用来指向上一个结点和下一个结点,头结点没有指向上一个结点也不存储数据,尾结点没有指向一下一个结点但是它指向上一个节点和存储数据List

 链表的时间复杂度 :

1.每一次查询都需要从链表的头部开始一次向后查找,随着数据元素N的增多比较的元素越多时间复杂度为O(n)。
2.每一次插入需要找到i位置的前一个元素,然后在插入数据,随着数据元素的增多,查找的元素越多,时间复杂度为O(n)。
3.每一次移除需要找到i位置的前一个元素,然后在移除数据,随着数据元素的增多,查找的元素越多,时间复杂度为O(n)。
 

我们到底该如何学习《数据结构与算法》? 本文出自《愚公要移山》个人博客中,地址www.javachat.cc 收录于《手牵手一起学习数据结构与算法》专栏 前言:我们到底该不该学习算法与数据结构? 1、真的应该学习 这个问题本身就不是个问题,所有人都在强调数据结构与算法比较重要,但是好像平时也没用到,无法直观的去感受它的重要性,于是把学习重心放在了常见的哪些框架身上,似乎只要熟悉了哪些框架的API,编程就会所向披靡。 我举一个我自身的例子,我本科期间想做一个APP,主要是在线预约的功能,既然是在线预约,用户多了之后那就需要排队,当时也不管三. 阅读详情

相关推荐

数据结构学习心得总结

开篇经过近一个月的学习,终于将郝斌老师讲的数据结构视频看完了~学习完成后,受益良多,也非常喜悦,非常开心,好像终于打了一场胜仗一样!我打算将这一个月的学习心得做一个汇总,记录下来。 希望能给初学者带来信心和经验,能给大家分享这份快乐~万事开头难刚开始打算学数据结构,是因为找工作面试的时候,很多公司都要求对数据结构有了解。没办法,我只有硬着头皮学了。但是我没有任何学习思路,因为之前上课学习的时候,我

Going Perfect 1万+

数据结构前两章学习总结

数据结构前两章学习总结

qq_65206177的博客 623

掌握数据结构:算法与应用 - 第10章读后感

本章节主要探讨了数据结构中的高级概念,例如图算法、树和堆等复杂数据结构的实现与应用。通过对章节内容的深入分析,我们可以更好地理解这些数据结构在实际编程中的重要性和应用场景。

weixin_35006125的博客 397

数据结构第一第二章总结

数据结构一二章总结

m0_67356814的博客 434

手把手教你配置C6678的SPI启动:从NorFlash烧写到多核加载的完整流程

本文详细介绍了TMS320C6678多核DSP的SPI启动全流程,包括硬件准备、镜像文件生成与转换、NorFlash烧写与验证、多核启动同步机制以及常见问题排查。通过实战演示,帮助开发者高效配置SPI启动模式,解决启动失败、多核同步异常等问题,提升嵌入式系统开发效率。

weixin_27076351的博客 144

拜耳阵列(Bayer Pattern)和解马赛克简介

拜尔阵列由柯达的布莱斯·拜尔发明,拜尔阵列将更多的像素用于绿色,而不是红色和蓝色,因为人眼对绿色更敏感。但这张照片,每个像素只有rgb中的一种颜色,每个像素还缺少其它两个颜色分量,效果如下图3所示。典型的图像传感器(例如我们在数码相机中使用的图像传感器,主要有CCD, CMOS)由许多单独的光电传感器组成,所有这些传感器都会捕获光线。如果想要获得不同颜色的光,最直接的做法是加入不同颜色的滤镜,从而滤出 RGB 三个通道的颜色。这个覆盖层可以理解为一个过滤层,每种类型的过滤器通常只允许一种颜色的光线的通过。

qq_34999565的博客 5974

数据结构(一、二)简介

第一章 数据结构绪论 正在上传…重新上传取消正在上传…重新上传取消

qq_37708081的博客 321

Mac用户必看:PD虚拟机网络初始化失败的3分钟修复指南(附详细截图)

本文针对Mac用户在Parallels Desktop(PD虚拟机)启动时遇到的“网络初始化失败”问题,提供了快速诊断与修复指南。核心原因是macOS系统更新后权限未正确授予。文章通过详细的三步修复法(关闭进程、修改配置文件、重新授权重启),帮助用户在3分钟内恢复虚拟机网络连接,并附有排查清单与预防建议。

weixin_29231027的博客 527

数据结构第一章第二章个人心得总结

由于种种原因,我还是将两章所学的

wushenghuan的专栏 860

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)>

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)> 插件导入项目 导入后打开OPS/Obfuscator/Obfuscator Pro Settings 打开后可以看到界面如下 可以在上面界面中选择你需要混淆的类,方法,字段,属性,事件,参数。需要混淆的程序集的选择。如果有些程序集混淆后会有问题也可以添加到白名单里不被混淆 根据自己需求取选择 这个界面是是否添加添加随机代码的 如果使用了上面的插件可以使用 插件下载网址:https://download.cs

Xing_Cheng_Yun的博客 5076

别再手动敲代码了!用STM32CubeMX+FreeRTOS图形化配置,5分钟搞定多任务通信框架

本文详细介绍了如何利用STM32CubeMX和FreeRTOS快速搭建多任务通信框架,大幅提升嵌入式开发效率。通过图形化配置工具,开发者可在5分钟内完成任务调度、时钟配置和内核对象生成,特别适合物联网设备开发。文章还提供了代码优化和调试技巧,帮助开发者轻松应对复杂应用场景。

weixin_30363285的博客 288

数据结构笔记一

/UINT8 a;T(n) = O(n^3) ////// 执行此数 n * n * n。T(n) = O(2 * n) ////// 执行此数 n + n。T(n) = O(n^2) ////// 执行此数 n * n。//3)判断顺序表是否满 //如果为满返回 1, 不满 返回0。

m0_71571889的博客 419

jmeter5.4.1 使用案例

jmeter主要用于接口压力测试,模拟海量请求并发访问接口 1.下载jmeter https://jmeter.apache.org/download_jmeter.cgi 2.启动jemter 双击即可 3.配置jmeter 1.先更改语言 2.创建线程组 配置线程执行规划 3.创建http请求默认值 4.创建http请求 5.创建http信息头管理器 指定 Content-Type:application/json 6.创建响应断言 7.创建察看结果数 直接点击 执行 按.

SpringHASh的博客 1213

《大话数据结构》学习记录1--第1,2章和第3章的顺序线性表

本文目录本文目录 前话 第12章的部分概念 第3章之顺序线性表 顺序线性表代码实现 总结前话今天开始,重新学习一下数据结构,因为发现学习编程,解决问题的过程中,自己编程的思维过于简单,在学校学习到关于算法的时候,就会觉得头大,就是之前的基础数据结构没学好,于是趁着我弟也开始自学数据结构,我也跟着一并复习。 (由于看书的时候,习惯用txt做笔记,所以图示较小,需要看图可以上找一下PDF版本里有相应的

just do what u want to do 480

S32K144 UDSdoCAN 升级刷写实现笔记

本篇旨在描述如何开发“车规级”的软件升级程序,通过在S32K144平台上实现基于UDSdoCAN的刷写升级功能,带你一步步建立安全升级的“工程思维”,在这里既能收获经验还能获得工程源码、测试脚本,助你起飞,避坑提速!

汽车电子软件领域知识分享 807

Vue3 - [最强] 超详细 Element Plus 组件库主题颜色进行 “统一全局“ 替换,将默认的蓝色主题色更换为其他自定义颜色,覆盖原来的主题色改为自己的颜色(完美解决主题色不生效、没反应)

elementplus修改主题色,vue3+element-plus主题色更换,vue3vite如何修改扩展elementplus主题色样式,全局设置elementplus主题色,有什么办法可以直接全局修改主题色,对elementplus默认蓝色不满意怎么替换更改其他颜色,elementplus覆盖默认主题色,elementplus主题色官方文档,vue3中修改elementplus主题色,elementplus修改主题色不生效怎么办,elementplus如何修改主题颜色,eleme

🏆 前端领域优质创作者 1万+

数据结构第1,2章总结

从开始接触数据结构这门课程到现在,已经学习两个

sunshine9958的专栏 560

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《大话数据结构》1、2数据结构、算法

大话数据结构 大话设计模式 head first设计模式 Java核心技术 卷1 深入理解Java虚拟机(JVM高级特性与最佳实践) 图解HTTP 大话数据结构 数据结构介绍, 算法推导大O阶的方法, 线性表结构的介绍,顺序结构与链式结构差异, 栈与队列的应用, 串的朴素模式匹配、 KMP 模式匹配算法, 树结构的介绍, 二叉树前中后序遍历,线索二叉树,赫夫曼树及应用, 图结掏的介绍,图的深度、广...

AthlenaA的博客 2409

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《算法导论》第 14 章 - 数据结构的扩张

本文介绍了数据结构扩张的基本概念和方法,重点讲解了动态顺序统计树和区间树的实现与应用。动态顺序统计树通过为二叉搜索树节点增加size属性,支持快速查询第i小元素和元素排名;区间树则在BST基础上添加max属性,高效处理区间重叠查询。文章详细阐述了这两种扩张数据结构的C++实现,包括核心操作(插入、删除、查询)的算法流程和代码示例,并探讨了数据结构扩张的一般原则。这些技术为解决复杂问题提供了有效工具,如排名统计、区间调度等应用场景。

2302_80961196的博客 1368

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

第1章 欢迎学习玩转数据结构

第1章 欢迎学习玩转数据结构为什么要学习数据结构在计算机的世界里,数据结构无处不在注意事项 为什么要学习数据结构 数据结构是所有计算机相关专业的同学必学的课程 数据结构研究的是数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据结构或修改数据 线性结构 树结构 图结构 数组、栈、队列、链表、哈希表… 二叉树、二分搜索树、AVL、红黑树、Treap、Splay、堆、Tri...

Kaptcha的学习 365

数据结构和算法是人工智能的基石

▊《算法秘籍》王一博 著算法是编程的基石,开发的核心。本书包含55个二维码,300多分钟视频,100多个知识点,50多个示例,适合程序员、计算机专业相关师生,以及对算法感兴趣的读者。这是一本关于数据结构和算法的书,以Java为描述语言,介绍了计算机编程中常用的数据结构和算法。全书共13章,讲述了常见的数据结构、排序算法、位运算、树、递归、回溯算法、贪心算法、双指针和滑动窗口、BFS和DFS、前缀和、动态规划、并查集、其他经典算法等知识。

herosunly的博客 4万+

《算法导论》第 10 章 - 基本数据结构

《算法导论》第10章基础数据结构摘要 本文系统讲解了栈、队列、链表和树四种基础数据结构。栈遵循LIFO原则,提供了数组实现及括号匹配等应用案例;队列遵循FIFO原则,展示了循环数组实现和滑动窗口最大值问题。详细介绍了单/双链表的实现,包含节点插入删除等操作,并给出了两数相加的链表应用。在树结构方面,重点讲解了孩子-兄弟表示法及其在文件系统模拟中的应用。所有数据结构均配有完整的C++实现代码、操作流程图和实际应用案例,通过理论与实践结合的方式,帮助读者掌握这些构建复杂算法的基石。

2302_80961196的博客 1393

【数据结构】学习路线

摘要 本文系统性地介绍了数据结构与算法从入门到进阶的学习路径。首先阐述了数据结构在编程中的核心地位及其应用场景,然后详细讲解了学习路线:从编程语言基础和复杂度分析开始,逐步掌握数组、链表、树等基础数据结构,以及排序、查找等基础算法;进而深入学习图、动态规划等高级内容和面试准备技巧;最后探讨了工程实践和前沿技术。文章强调循序渐进的学习方法,推荐LeetCode等刷题平台,并提供大量代码示例,帮助读者构建完整的知识体系,为成为优秀程序员奠定坚实基础。

大雨淅淅的博客 1794

学习数据结构有什么用?

当我们遇到一个实际问题时,首先需要解决两件事: (1)如何将数据存储在计算机中; (2)用什么方法和策略解决问题。 前者是数据结构,后者是算法。只有数据结构没有算法,相当于只把数据存储到计算机中,而没有有效的方法去处理,就像一幢只有框架的烂尾楼;若只有算法,没有数据结构,就像沙漠里的海市蜃楼,只不过是空中楼阁罢了。 数据是一切能输入计算机中的信息的总和,结构是指数据之间的关系。数据结构就是将数据及其之间的关系有效地存储在计算机中并进行基本操作。算法是对特定问题求解步骤的一种描述,通俗讲就是解决问题的

人邮异步社区 8570

如何学习数据结构和算法

首先掌握常用的、基础的。然后在此基础上往进行扩展学习。 常用的、基础的数据结构和算法有20个。 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 这些需要一一攻克。 多思考,多想。往往需要灵魂三问,是什么?有什么用?怎么用?用来解决哪些实际问题? 当然了,你也可以思考一下为啥要学习这门课程? 什么是数据结构?什么是算法? 广义:数据结构就是一组存储结构。算..

铭 6443

算法+数据结构=程序,程序员怎样才能学好算法?

*数据结构和算法是计算机科学的基石,是计算机的灵魂,要想成为计算机专业人员,学习和掌握算法是十分必要的。**不懂数据结构和算法的人不可能写出效率更高的代码。计算机科学的很多新行业都离不开数据结构和算法作为基石,比如大数据、人工智能等。底层开发中也需要使用非常多的数据结构和算法知识,以保证底层系统的稳定性和高效性。“算法+数据结构=程序”(Algorithms+Data Structures=Programs)所以数据结构和算法是程序员必须掌握的技能。

爱书不爱输的程序猿 6158
Asir_Y
博客等级 码龄4年 1粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值