![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 76
数据结构
An_Mo
这个作者很懒,什么都没留下…
展开
-
常见排序算法的实现
1、插入排序:基本思想:直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。直接插入排序:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移。直接插入排序原创 2021-07-12 11:06:41 · 281 阅读 · 0 评论 -
二叉树链式结构
一、二叉树链式结构的遍历1、概念:所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历:按照某种规则,对二叉树中的每个节点进行相应的操作(打印、每个节点值+1),并且每个节点只能操作一次2、前序/中序/后序的递归结构遍历:是根据访问结点操作发生位置命名NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生原创 2021-07-05 20:42:44 · 273 阅读 · 2 评论 -
二叉树-堆
一、堆的概念及结构如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。...原创 2021-07-05 11:11:03 · 277 阅读 · 3 评论 -
二叉树基本操作
一、 树的概念以及相关概念1、树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。2、树的术语节点的度:一个节点...原创 2019-07-22 17:42:44 · 224 阅读 · 0 评论 -
数据结构-排序
一、排序的概念及其运用排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字大小,递增或递减的排列起来的操作。稳定性:如果能保证排序过程中不会改变相同数据的前后关系,就是稳定排序;否则就是不稳定排序。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。二、排序算法复杂度及稳定性分析三、常见排序算法...原创 2019-07-23 17:38:36 · 302 阅读 · 0 评论 -
栈和队列练习题
一、有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。示例 1:输入:s = “()” 输出:true示例 2:输入:s = “()[]{}” 输出:true示例 3:输入:s = “(]” 输出:false示例 4:输入:s = “([)]” 输出:false示例 5:输入:s = “{[]}” 输出:true提示:1 <原创 2021-07-04 16:17:36 · 606 阅读 · 1 评论 -
数据结构-链表
一、概念链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表是一种有序的列表。链表的内容通常存储与内存中分散的位置上。链表由节点组成,每一个结点的结构都相同。节点分为数据域或链域,数据域顾名思义就是存放节点的内容,链域存放的是下一个节点的指针,也就是螳螂捕蝉黄雀在后的道理。链表结构1、单向、双向2、带头、不带头3、循环、非循环1. 无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结 构,如原创 2021-07-03 16:30:11 · 1001 阅读 · 1 评论 -
链表练习题
一、移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。提示:列表中的节点数目在范围 [0, 104] 内1 <= Node.val <= 500 <= val <= 50```cstruct ListNode* removeElements(struct ListNode* head, int val){ struct ListNode* cur=h原创 2021-07-01 19:04:21 · 478 阅读 · 1 评论 -
数据结构-顺序表
一、概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成为数据的增删查改。顺序表一般可以分为:1、静态顺序表:使用定长数组存储2、动态顺序表:使用动态开辟的数值存储//顺序表的静态存储#define N 100typedef int SLDataType;typedef struct SeqList{ SLDataType array[N];//定长数组 size_t size;//有效数据的个数原创 2021-06-29 21:08:59 · 431 阅读 · 0 评论 -
时间复杂度&空间复杂度
一、什么是数据结构?数据:比如一个班级的学生信息,不是只有1,2,3,4等才是数据结构:组织关系数据结构:数据和数据之前的组织关系二、时间复杂度&空间复杂度1、衡量一个算法的好坏:通过算法的复杂度来进行衡量的2、算法效率算法效率分为两种:第一种是时间效率,第二种是空间效率。时间效率就是时间复杂度,空间效率就是空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,空间复杂度主要衡量得是一个算发所需要的额外空间。3、时间复杂度概念:是一个关于问题规模N的数学表达式,计算算法中某条原创 2021-06-29 16:36:46 · 151 阅读 · 1 评论 -
链表和顺序表
一、线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。线性表的存储结构特征:1、集合中必存在唯一的一个“第一元素”2、集合中...原创 2019-08-01 17:14:35 · 642 阅读 · 0 评论 -
c语言实现链表以及部分函数功能
1、链表的概念:链表是一种非连续、非顺序的数据结构。2、链表的分类:主要分为这三类:单链表、双向链表、循环链表,这三者又可以通过组合形成总共8种链表。3、链表的基本操作:首先时头文件部分.h//不带头节点的单链表 // 节点结构 typedef struct SListNode{ int _data; struct SListNode* _pNext;}Node;// ...原创 2019-07-31 16:51:07 · 199 阅读 · 0 评论 -
数据结构-栈和队列
一、栈的概念以及特性1、栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。2、入栈出栈示意图(遵循先进后出原则)3、栈的实...原创 2019-07-25 15:53:29 · 177 阅读 · 0 评论