
数据结构
文章平均质量分 90
独奏夜上弦^O^
这个作者很懒,什么都没留下…
展开
-
数据结构(十一)—七大内排序算法与优化
排序真的是一个经典问题,也有很多大佬深入地研究与讲解了各种排序算法,我这里只是对我所学的几种排序进行了一下总结。深入地讲解可以看其他大佬的ヾ(◍°∇°◍)ノ゙原创 2022-03-16 22:20:05 · 969 阅读 · 0 评论 -
数据结构(十)—查找算法(顺序表查找、有序表查找、线性索引查找、二叉排序树、AVL树、B树、散列表)
文章目录一、查找的定义二、顺序表查找(时间复杂度O(n))三、有序表查找(时间复杂度O(logn))3.1折半查找(二分查找)3.2插值查找3.3斐波那契查找四、线性索引查找4.1稠密索引4.2分块索引4.3倒排索引五、二叉排序树5.1二叉排序树的查找操作5.2二叉排序树的插入操作5.3二叉排序树的删除操作原创 2022-03-13 23:55:45 · 1878 阅读 · 0 评论 -
数据结构(九)-图与图的算法(存储结构,优化存储结构、图的遍历、最小生成树、最短路径算法)
有关图的定义和图的基本算法原创 2022-03-11 22:41:54 · 942 阅读 · 0 评论 -
数据结构(八)-二叉树(二叉树概念、存储结构、遍历方法、线索二叉树)
文章目录一、二叉树的定义二、二叉树的特点三、特殊的二叉树四、二叉树的顺序存储结构五、二叉链表六、遍历二叉树七、遍历算法的实现八、二叉树的建立九、线索二叉树十、完整代码的实现一、二叉树的定义二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树)。或者由一个根结点的两棵互不相交的,分别称为根结点的左子树和右子树的二叉树组成。二、二叉树的特点每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。左子树和右子树是有顺序的,次序不能任意颠倒。即使树原创 2022-01-13 15:28:46 · 369 阅读 · 0 评论 -
数据结构(七)-树-基本概念、三种存储结构(Java、C语言)
每天get一个新知识,超开心~前面讲的数据结构都是前后具有一对一的关系,无论是线性表还是队列,栈等都是一对一的关系,那么如果出现一对多的关系的时候该怎么办呢?这种一对多的关系,就是今天要学习的数据结构——树。文章目录一、树的定义二、树的基本概念三、树的抽象数据类型四、树的双亲表示法(Java、C语言)五、树的孩子表示法(Java、C语言)六、树的孩子兄弟表示法(Java、C语言)一、树的定义树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:有且仅有一个特定原创 2022-01-12 16:57:53 · 785 阅读 · 0 评论 -
数据结构(六)-串(字符串、模式匹配算法)(Java、C语言)
文章目录一、串的定义二、串的比较三、串的抽象数据类型四、串的顺序存储结构(Java、C语言)五、串的链式存储结构六、朴素的模式匹配算法七、KMP模式匹配算法八、KMP改良算法九、总结一、串的定义字符串并不是基本类型中的一种,它需要我们通过数据结构来实现,用来存储一连串的字符的数据结构,并提供一系列的方法来对字符串进行操作。串:串是由零个或多个字符组成的有限序列,又叫字符串。二、串的比较开始比较之前我们来了解一下编码,大家在学习任何编程语言的时候,都会接触到编码这个概念,以为计算机只能识别0和1,所原创 2022-01-11 16:16:03 · 610 阅读 · 0 评论 -
数据结构(五)-队列(Java、C语言)
今天内容比较简单~文章目录一、队列的定义二、队列的抽象数据类型三、循环队列(C语言)四、循环队列(Java)五、队列的链式存储结构的实现(C语言、Java)六、总结一、队列的定义队列:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表二、队列的抽象数据类型ADT Queue{数据对象:D={ai|ai∈ElemSet, i=1,2, …,n, n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D, i=1,2, …,n } 约定a原创 2022-01-10 13:28:46 · 674 阅读 · 0 评论 -
数据结构(四)-栈与栈的应用(递归、四则运算表达式)(Java、C语言)
今天我们来学习栈与栈的应用,并以此来学习栈在递归算法,四则运算表达式中的应用一、栈的定义大家在写程序的时候应该都遇到过一个异常叫做“栈溢出”那这个栈和我们今天要学习的栈有什么异同呢?栈溢出就是缓冲区溢出的一种。由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分配一些内存空间,通常称这些空间为缓冲区。如果向缓冲区中写入超过其本身长度的数据,以致于缓冲区无法容纳,就会造成缓冲区以外的存储单元被改写,这种现象就称为缓冲区溢出。缓冲区原创 2022-01-09 13:48:15 · 819 阅读 · 2 评论 -
数据结构(三)-线性表-链式存储结构、静态链表(Java、C语言)
本篇文章紧接上篇文章,上文了解了线性表的顺序存储结构,本篇文章我们来了解线性表的链式存储结构,并对比两种存储结构的优缺点。文章目录一、顺序存储结构的不足二、链式存储结构三、链式存储结构代码(C语言)四、线性表的链式存储结构(Java)五、静态链表六、循环链表与双向链表一、顺序存储结构的不足顺序存储结构虽然有它的优点,但是,顺序存储结构也有一个很大的缺陷,它的插入和删除需要挪动大量的元素,造成算法效率的问题,现在存储的数据,进行的操作还比较少,所以感受不到,但是当操作数量达到一定程度的时候,用顺序存储结原创 2022-01-08 16:28:44 · 1086 阅读 · 1 评论 -
数据结构(三)-线性表-顺序存储结构(Java、C语言)
从今天开始,本专栏将进入数据结构的学习,由于我学的书是C语言版,但本人比较喜欢Java,并且这两种语言在使用上存在一点细微的差别,因此,我将会从Java与C语言同时进行学习。今天学习第一个数据结构——线性表一、线性表的概念什么是线性表呢?前面我们学到,数据元素之间存在的关系就是数据结构,那么线性表中的元素存在什么关系呢?线性表:线性表是零个或多个数据元素的有限序列那我们可以看到,这个线性表是一个有序地序列,元素之间存在先后顺序。打个比方就像小朋友排队一样每一个小朋友就是线性表中的数据元素,他们原创 2022-01-07 14:34:11 · 1084 阅读 · 2 评论 -
数据结构(二)-数据结构与算法(时间复杂度与空间复杂度)
一、数据结构与算法的关系其实很多时候,感觉数据结构与算法是相互依存的,很多书的名称就叫数据结构与算法。那它们之间究竟有什么关系呢?以下为个人理解。数据结构更像是一种方法,它能够使你的算法变得更加高效和精炼,当学习数据结构的时候,适当地了解一些算法可以帮助你更加深刻地理解数据结构的用法以及效果。算法是一种为解决某个问题而设计的方法,算法并不是唯一的,但根本目的是要解决问题,而通过学习数据结构能够很好地帮助我们优化我们的算法。二、算法的时间复杂度与空间复杂度了解算法的时间复杂度,首先要了解函数的渐进原创 2022-01-06 15:27:01 · 439 阅读 · 1 评论 -
数据结构(一)-数据结构基本概念(Java、C语言)
一、引言数据结构这门课相信大家都不陌生,只要想从事计算机相关与互联网相关的工作,这门课都是必不可少的课。但是我并不是计算机专业学生,作为一个电气专业的学生,接触到的编程基本都是底层编程,无论是汇编语言(微机原理)、C语言(偏底层的应用,如单片机)、数据库等。因此,我们的课程中并没有数据结构这门课,但是我比较喜欢编程,因此,我将自学数据结构,希望通过写博客的方式巩固自己的所学。本人菜鸟一枚。希望有人能指出我的不足与错误。开始我的学习!!!二、书籍选择我这里选择了程杰的大话数据结构(C语言版),听说这本原创 2022-01-06 14:05:47 · 1458 阅读 · 1 评论