数据结构
文章平均质量分 87
数据结构
沉远
安徽理工大学计算机专业21级本科生
展开
-
C语言中的指针和数组
1)数组名代表数组的首地址,即元素 a[0] 的地址(&a[0] )。2)表达式 a+i 代表数组中下标为 i 的元素 a[i] 的地址。3)*(a+i) 表示第 i 个元素的内容。原创 2022-10-07 00:10:45 · 282 阅读 · 0 评论 -
KMP算法
1. **前缀:是指除了最后一个字符外,一个串的全部头部组合。** 例如在子串「ABCABX」中,A,AB,ABC,ABCA,ABCAB 均是该串的前缀。2. **后缀:是指除了第一个字符外,一个字符串全部尾部组合(不包括最后一个字符)。** 如上例(ABCABX)中,B,AB,CAB,BCAB 均为该串的后缀。3. **部分匹配值:就是前缀和后缀中最长的公共前后缀的长度值。** 如上例(ABCABX)中,对于元素X来说,最长前后缀共有的元素为AB两个元素,所以部分匹配值为 2。原创 2022-10-24 22:20:29 · 142 阅读 · 0 评论 -
C语言中的指针
1. 指针的格式符是 %p 。2. 取地址运算符:「 & 」用于获取变量的地址。3. 解引用运算符(指针运算符、间接寻址运算符):「 * 」用来访问指针变量指向的变量的值。原创 2022-10-03 17:25:07 · 397 阅读 · 0 评论 -
实验三_栈的操作
题目描述栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。原创 2022-10-14 21:00:00 · 1380 阅读 · 4 评论 -
实验七_查找算法
题目描述利用静态查找表完成顺序查找和折半查找,注意折半查找的前提是查找表中的元素是有序的。输入输入包括多行,每行代表一定的含义:输入1,创建静态查找表,接着输入n表示查表中元素个数,再输入n个整数,创建成功后输出查找表中所有元素;输入2 k1,代表使用顺序查找,k1表示需要查找的值,找到输出元素在查找表中的位置,否则输出0;输入3 k2,代表使用折半查找,k2表示需要查找的值,找到输出元素在查找表中的位置,否则输出0,注意在使用折半查找前主函数已对查找表进行的升序排序,已该表元素的位置;原创 2023-02-10 21:40:45 · 245 阅读 · 0 评论 -
实验五_二叉树操作
1. 求二叉树深度,判断树是否为空时,不能直接「 if(T) 」,否则会导致函数没有返回值。要在判断树为空时,返回0,保证函数有返回值。2. 计算叶子数和节点数时,要用全局变量 LEAFCOUNT 和 NODECOUNT ,因为该变量不仅在函数中要使用,在主函数中也要使用。3. 注意先、中、后序遍历的英文缩写(PreOrder,InOrder,PostOrder),要规范。原创 2022-11-23 22:35:22 · 534 阅读 · 0 评论 -
实验四_循环队列基本操作
循环队列是数据结构中一种基本的数据结构,它是用连续存储空间结构实现队列,为了区分队空和队满的不同状态,少用一个空间以示区别。需要你完成循环队列的数据结构定义、阅读队列所有元素输出、实现队列进队、出队、队空、初始化、取队头、求队长度等操作的实现。原创 2022-11-13 20:21:25 · 932 阅读 · 0 评论 -
实验一_线性表
顺序表是数据结构中一种最基本的数据结构,它是用连续存储空间结构实现的线性表。主要包括顺序表操作,阅读顺序表数据结构定义、阅读顺序表的初始化、阅读顺序表的输出、完成插入操作、完成删除操作。原创 2022-09-25 23:06:52 · 981 阅读 · 0 评论 -
数据结构_OJ第一次作业
1. 题目描述:输入n组数据;下面n组,每组两个数a,b;(0原创 2022-09-18 23:00:00 · 266 阅读 · 0 评论 -
实验二_单链表
链表是数据结构中一种最基本的数据结构,它是用链式存储结构实现的线性表。它较顺序表而言在插入和删除时不必移动其后的元素。现在给你一些整数,然后会频繁地插入和删除其中的某些元素,会在其中某些时候让你查找某个元素或者输出当前链表中所有的元素。原创 2022-10-07 14:00:00 · 485 阅读 · 0 评论 -
数据结构第一、二章 绪论与算法
步骤:1)计算算法总共执行次数(运行时间)。(算)2)用常数1取代运行时间中的所有加法常数。(换)2)只保留最高阶项。(删)3)如果最高阶项存在且系数不是1,则去除该系数。(查)注意事项:1)单纯的分支结构(不包含在循环中),其时间复杂度是O(1)。2)分析算法的时间复杂度,关键就是要分析循环结构的运行情况。原创 2022-09-12 13:33:06 · 762 阅读 · 1 评论 -
第七章 树
1. 二叉树的性质: 1)二叉树的第 i 层最多有 $2^{i-1}$ 个结点。 2)深度为k的二叉树至多有$2^k-1$个结点(k≥1)。 3)对任何一棵二叉树,若它含有$n_0$个叶子结点、$n_2$个度为2的结点,则必存在关系式:$n_0 = n_2+1$。 4)具有n个结点的完全二叉树的深度为$「log_2n」+1$,「X」表示不大于X的最大整数。 5)若对含n个结点的完全二叉树从上到下且从左至右进行1至n的编号,则对完全二叉树中任意一个编号为i的结点原创 2022-11-23 22:54:23 · 272 阅读 · 0 评论 -
第三章 线性表
1. 文章大纲:本文由**知识点思维导图,注意事项与易错点,题型总结,方法心得**四部分组成。2. 题型总结部分较长,主要内容是**计算顺序存储结构中数据元素的地址**、**顺序存储结构的相关操作**以及**链式存储结构的相关操作**。原创 2022-09-28 10:57:14 · 172 阅读 · 0 评论 -
第八章 图
补充:1. 邻接表 1)优点:空间效率高,容易寻找顶点的邻接点; 2)缺点:判断两顶点间是否有边或弧,需搜索两结点对应的单链表,没有邻接矩阵方便。 3)邻接矩阵的空间复杂度为O(n2),而邻接表的空间复杂度O(n+e)。 4)邻接矩阵多用于稠密图的存储,邻接表多用于稀疏图的存储。2. 图的遍历 1)为避免访问多次,常设置一个访问数组,访问前的元素标志为0,访问后设置为1。 2)深度优先搜索是一种递归的过程。 3)深度和广度优先遍历得到的序列不唯一。 4)若图是连通的或强连通的,则从图中某原创 2022-12-05 15:29:15 · 271 阅读 · 0 评论 -
第十章 排序
1. 排序定义:使得序列成为按关键字有序的序列的操作。2. 稳定性:对于关键字相等的几个元素,若排序前和排序后的顺序不变,则所用的排序方法是稳定的;反之,则不稳定。3. 影响排序算法的三个因素: 1)时间性能:尽可能少进行关键字比较和记录移动; 2)辅助空间:指执行算法所需要的其他存储空间; 3)算法的复杂性:指算法本身的复杂度。4. 内部排序:待排序的记录放在计算机内存中进行排序,整个排序过程不需要访问外存便能完成排序。5. 外部排序:排序的记录数量比较大,排序期间文件的全部记录不能同时存放原创 2023-02-11 17:18:28 · 435 阅读 · 0 评论 -
第九章 查找
1. 直接定址法: 1)内容:取关键字或关键字的某个线性函数作哈希地址,即$H(key)=a·key+b$。 2)该方法不会产生冲突,但实际用该方法的情况很少。2. 数字分析法: 1)内容:如果事先知道关键字的集合,且关键字的位数比哈希表的地址位数多,则可**选取数字分布比较均匀的若干位作为哈希函数**。 2)该方法适于关键字位数比哈希地址位数大,且可能出现的关键字事先知道的情况。3. 平方取中法: 1)内容:取关键字**平方后中间几位**作哈希地址。 2)适于不知道全部关键字情况。原创 2023-02-10 21:57:14 · 357 阅读 · 1 评论 -
第五章 串
存储密度 = 串值所占的存储位 / 实际分配的存储位。(或:结点数据本身所占的存储量 / 结点结构所占的存储总量 )。存储密度越大,空间利用率越高(如顺序表的存储密度为1,链表存储密度小于1。顺序表空间利用率高于链表。)原创 2022-10-31 21:52:16 · 140 阅读 · 0 评论 -
第四章 栈与队列
一、进栈出栈次序问题1. 解题关键:抓住后进先出(LIFO)这一思想。解题时,主要分析某一时刻的出入栈元素,以及栈中剩余元素。2. 解较复杂的题时,可以先画出栈的示意图,再根据题目给的出栈入栈次序,确定每次出入栈后,栈中的元素是哪几个。据此判断出栈入栈次序是否可行。原创 2022-10-21 19:45:51 · 389 阅读 · 0 评论 -
第六章 数组和广义表
1. 一个n维数组类型可以定义为其数据元素为 n-1维数组类型的一维数组类型。2. 行/列优先存储: 1)行优先存储:将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。其存储的线性序列为:$a_{00},a_{01},…,a_{(0,n-1)},a_{10},a_{11},…,a_{(1,n-1)},…,a_{(m-1,0)}, …,a_{(m-1,n-1)}$ 2)列优先存储:将数组元素按列排列,第j+1个列向量紧接在第j个列向量之后,其存储的线性序列为:$a_{00},a_{10},…,原创 2022-11-20 21:06:18 · 649 阅读 · 0 评论