自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 图的几个基本概念:连通图、强连通图、完全图等

例:假设有图G=(V,{E}),顶点集A⊆V,B⊆E,则A和{B}构成G的子图。 答:错误,因为A和B未必能构成图。定义中g是G的子图,是因为给条件时已经明确g是图。Ve()【事件也就是顶点】:事件最早发生时间,从前往后,取最大值 Vl():事件最晚发生时间,从后往前推,取最小值 e()【活动也就是弧】:活动最早开始时间,e=,e(i) = Ve(v1); l():活动最晚发生时间:从后往前,l=Vl - 活动时间

2022-11-17 20:25:38 1786 1

原创 编写插入排序程序。以任意次序读入20个数据。将第一个数放入数组a的第一个元素中,以后读入的数应与已存入数组a中的数进行比较,确定它在从小到大的排列中的位置。【冒泡插入】

题目:编写插入排序程序。以任意次序读入20个数据。将第一个数放入数组a的第一个元素中,以后读入的数应与已存入数组a中的数进行比较,确定它在从小到大的排列中的位置。将该位置及其后面的元素向后推移一个位置,将新读入的数据填入空出的位置中。这样在数组a中的数总是从小到大的排列的。20个数据处理完后输出数组a。

2022-11-11 19:08:28 435

原创 栈、队列应用题

答:用常规意义下顺序存储结构的一维数组表示队列,由于队列的性质(队尾插入和队头删除),容易造成“假溢出”现象,即队尾已到达一维数组的高下标,不能再插入,然而队中元素个数小于队列的长度(容量)。答:队列是允许在一端插入而在另一端删除的线性表,允许插入的一端叫队尾,允许删除的一端叫队头。答:栈是只准在一端进行插入和删除操作的线性表,允许插入和删除的一端叫栈顶,另一端叫栈底。第二是从给定序列的开始,到给定序列中的任一位置,S的个数要大于或等于x的个数。理解一:输入序列的元素相同,但元素之间的顺序可以不同。

2022-11-05 16:54:53 530

原创 线性表应用题

答:在线性表的链式存储结构中,头指针指链表的指针,若链表有头结点则是链表的头结点的指针,头指针具有标识作用,故常用头指针冠以链表的名字。头结点是为了操作的统一、方便而设立的,放在第一元素结点之前,其数据域一般无意义。其三,表的容量难以扩充。①如果有n个线性表同时并存,并且在处理过程中个表的长度会动态变化,线性表的总数也会自动地改变。②若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?3、说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;

2022-11-05 15:16:54 485

原创 第一章 绪论

答:数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“领接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则是依赖于存储结构。通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将散列函数的值解释成关键字所在元素的存储地址,这种存储方式称为散列存储。算法的输入规模是作为该算法的数据所含数据元素的数目,或于此数目有关的其它参数。

2022-11-03 18:19:46 99

原创 用二叉链表存储二叉树,并判断二叉树是否为完全二叉树

1、写一个建立二叉树的算法;2、写一个判别给定的二叉树是否是完全二叉树的算法。按要求二叉树按二叉链表形式存储,判断是否为完全二叉树。

2022-11-02 16:41:48 4023 3

原创 模式匹配算法

若s[i] ==t[j],则i,j都加1;否则,i回溯到 i=i-j+1,j=0;时间复杂度:最好O(n);最坏O((m-n)*n),即O(m*n);i的值域是0~m-n ,j的值域是0~n-1 ,初始值均为0;i-j:让i回到本次匹配失败的子串的第一个元素位置,i-j+1:使指针i指向下个匹配子串起始位置。分析:主要思想是模式匹配:s,t分别各设一个指针i和j,子串在主串中的位置是i-n+1;子串在主串中的下标是i-n;

2022-11-01 15:03:31 91

原创 程序2:逆序输出

给出一个不多于5位数的正整数,要求:1、求出它是几位数;2、分别输出每一位数字;3、按逆序输出每一位数字;例如原数是321,输出为123.

2022-10-31 18:10:39 1183

原创 后缀表达式求值、字符转数字

将c='1.2'转为数字1.2:c=b/10.0 也可以是:c=a+('2'-'0')/10.0。将b='12'转为数字12: b=a*10+'2'-'0'将a='1'转为数字1:a='1'-'0'分析:从键盘端输入,则进行运算前需将操作数转化为数字。

2022-10-31 16:48:12 150

原创 线性表中元素有序且按顺序存储于计算机中。要求设计一算法完成:用最少时间在表中查找数值为X的元素,若找到将其与后继元素位置交换,若找不到将其插入表中并使表中元素仍递增有序

因为题目要求用最少时间查找,所以这使用折半查找。

2022-10-30 16:48:37 343 1

原创 复习二十四:外部排序

个人错题集

2022-10-25 18:47:30 104

原创 程序设计1:有3个数据a,b,c,它们由键盘输入,编写程序将它们按从小到大排序。

【代码】程序设计1:有3个数据a,b,c,它们由键盘输入,编写程序将它们按从小到大排序。

2022-10-25 17:49:12 949

原创 复习二十三:内部排序算法比较

快速排序被认为是目前基于比较的内部排序方法中最好的方法,当待排序的关键字随机分布时,快速排序的平均时间最短。堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况,这两种排序都是不稳定的。④在基于比较的排序方法中,每次比较两个关键字的大小之后,仅出现两种可能的转移,因此可以用一棵二叉树来描述比较判定过程,由此可以证明:当文件的n个关键字随机分布时,任何借助于“比较”的排序算法,至少需要O(nlog2n)的时间。⑤若n很大,记录的关键字位数较少且可以分解时,采用基数排序较好。

2022-10-25 15:04:22 371

原创 栈的应用——括号匹配

设表达式以字符形式已存入数组E[n]中,‘#’表达式中的结束符,试写出判断表达式中括号【‘(’和‘)’】是否配对的c语言描述算法:EXYX(E);①题中已说明只需判断【‘(‘ ‘)’】,因此不需再判断中括号或大括号;

2022-10-25 14:50:45 196

原创 复习二十二:选择排序、归并排序、基数排序

个人错题集

2022-10-24 15:09:42 104

原创 复习二十一:插入排序、交换排序

②当第一趟的关键字肯定出现在最终位置,当这个关键字在队首或队尾时,相当于只分为了一部分,此时下一趟必然只会出现一个关键字;当这个关键字不在两头时,肯定将序列分为两部分,这样下次序列肯定能产生两个新关键字。这类题的判断依据:①第i趟完成时会有i个以上的数出现在他最终出现的位置。

2022-10-22 19:26:35 81

原创 复习二十:哈希表

个人错题

2022-10-19 17:23:10 94 1

原创 复习十九:B树、B+树

个人错题集

2022-10-18 15:57:02 87

原创 复习十八:查找:二叉排序树、平衡二叉树、红黑树

个人错题集

2022-10-17 22:32:56 117

原创 复习十七:查找——线性表查找【错题集】

个人错题集

2022-10-09 17:22:46 106

原创 复习十六:图的遍历、最小生成树、最短路径、关键路径、拓扑排序【错题集】

1、该连通图本身就是一棵树【即:边数比顶点少1】2、各边权值互不相等。

2022-10-06 18:55:25 128

原创 复习十五:图【错题集】

错题集

2022-10-02 18:54:24 108

原创 复习十四——树与森林、哈夫曼树、并查集【错题集】

个人错题集

2022-09-28 14:27:39 80

原创 复习十三:二叉树01

错题集

2022-09-24 14:56:25 125

原创 复习十二:广义表

广义表的广度定义为最外层包含元素个数;二、递归法求广义表深度。一、广义表的定义及其重要特性。三、递归法复制广义表。

2022-09-19 18:25:28 603

原创 复习十一:串的模式匹配算法

算法思想:从主串S的第pos个字符起和模式串的第一个字符相比较,若相等,则继续逐个比较后续字符,否则从主串的下一个字符起再重新匹配,以此类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,返回匹配成功子串的第一个字符在主串S中的序号。3、求next数组【作用:当模式串的第j个字符失配时,从模式串的第next[j]的继续往后匹配】最好时间复杂度:O(N+M) 最坏O(N*M)2、KMP算法 时间复杂度O(N+M)时间复杂度O(M) M是模式串长度。

2022-09-17 14:49:17 237

原创 复习十:栈与递归的实现

每一层递归所需信息构成一个“工作记录”,其中包括所有的实在参数、所有的局部变量以及上一层的返回地址。每退出一层递归,就从栈顶弹出一个工作记录,则当前执行层的工作记录必是递归工作栈栈顶的工作记录,称这个记录为“活动记录”,并称指示活动记录的栈顶指针为“当前环境指针”。【一个递归函数的运行过程类似于多个函数的嵌套调用,只是调用函数和被调用函数时同一个函数】一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。若在函数A中调用了函数B,则称函数A为调用函数,称函数B为被调用函数。

2022-09-15 14:51:26 283

原创 复习九:栈的应用——表达式求值

OperandType EvaluateExpression(){ //算术表达式求值的算符优先算法。设OPTR为运算符栈,OPND为操作数栈 //OP为运算符集合 InitStack(OPTR); Push(OPTR,'#'); //“#”为运算符栈的栈低元素 InitStack(OPND); c=getchar(); //输入表达式,表达式起始符为“#” while(c!= '#' || GetTop(OPTR)!='#'){

2022-09-14 09:31:31 209

原创 复习八:栈的应用——数制转换、括号匹配的检验

假设表达式中允许出现包含两种括号:()[],其嵌套顺序随意,设计一个算法检验括号是否匹配。1、十进制N和其他d进制数转换。

2022-09-13 15:56:24 369

原创 realloc()使用方法

先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址。//新的大小若小于原来的大小,原数据的末尾可能丢失(被其他使用内存的数据覆盖等)语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。

2022-09-12 21:14:40 481

原创 exit的用法

exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而return是返回函数值并退出函数。所以,exit(OVERFLOW)的含义就是,退出程序,并返回OVERFLOW的值给主调进程。其标准的使用范围为,当程序运算出现上溢时,退出程序并报错给主调进程。原文链接:https://blog.csdn.net/weixin_45963815/article/details/105455178。

2022-09-12 21:10:39 4390

原创 复习七:队列

Q.front==Q.rear,则为队空;tag等于1时,若因插入导致Q.front==Q.rear,定义:将顺序队列臆造为一个环状的空间,即把存储 队列元素的表从逻辑上视为一个环,称为循环队列。这样,队空的条件为Q.size==0;针指向队头结点,尾指针指向队尾结点,即单链表的最后一个结点(注意与顺序存储的不同)。1)牺牲一个单元来区分队空和队满,入队时少用一个队列单元,这是一种较为普遍的做法,这两种情况都有Q.front==Q.rear。队列的链式表示称为链队列,它实际上是一个。

2022-09-11 20:57:12 1018

原创 复习六:数据结构英文关键词

数据结构英语关键词

2022-09-09 21:45:32 145

原创 复习五:栈

当0号栈进栈时 top0 先加 1 再赋值,1号栈进栈时top1先减1再赋值∶出栈时则刚好相反。∶这里top指向的是栈顶元素,所以进栈操作为 S.data【++S.top】=x,出栈操作为。并规定所有操作都是在单链表的表头进行的【也就是说链栈的插入操作是通过头插法实现的,没有尾插法】利用栈底位置相对不变的特性,可让两个顺序栈共享一个一维数组空间,将两个栈的栈底分。采用链式存储的栈称为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,目不存。栈的数学性质∶ n 个不同元素进栈,出栈元素不同排列的个数为。

2022-09-08 22:18:10 533

原创 复习四:线性表综合题

i++,j--) 交换L.data[i]与L.data[j]i

2022-09-08 20:41:28 182

原创 复习三:线性表

循环单链表和单链表的区别在于,表中最后一个结点的指针不是NULL,而改为指向头结点, 从而整个链表形成一个环,如图2.12所示。在循环单链表中,表尾结点*r的 next 域指向L,故表中没有指针域为 NULL的结点,因此, 循环单链表的判空条件不是头结点的指针是否为空,而是它。1、单链表:线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素。在循环双链表L中,某结点*p为尾结点时,p->next==L;采用头插法建立单链表时,读入数据的顺序与生成的链表中的元素的顺序是相反的。

2022-09-02 20:31:28 189

原创 复习二:计算时间复杂度

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。可以得出,执行次数t = n^(1/2)-1。

2022-09-01 20:19:09 379 2

原创 复习一:基本概念和术语

数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称;数据元素:数据的基本单位;数据项是数据不可分割的最小单位,一个数据元素可由若干个数据项组成;数据对象:性质相同的数据元素的集合,是数据的一个子集;...

2022-08-31 21:53:41 214 2

原创 数据结构——串

互异的非平凡子串(非空且不同于主串本身)的数目为n(1+n)-1。长度为n的字符串,子串数目为n(1+n)\2+1;3、串是一种特殊的线性表,其特殊性体现在数据元素时一个字符。1、子串主串的一部分,一定存在;N=''N为空格串。模式串不一定能在主串中找到。2、M=‘’M为空串。...

2022-07-22 17:36:45 3093 1

原创 平衡二叉树【AVL树】——插入、删除

1、平均查找长度(树高): 2、结点的平衡因子=左子树高-右子树高平衡二叉树结点的平衡因子只可能是0,1或-1 2、插入 2.1 每次调整的对象都是“最小不平衡子树” 2.2 调整最小不平衡子树A ①LL【A的左孩子右上旋】:在A的左孩子的左子树中插入导致不平衡 ②RR【A的右孩子左上旋】:在A的右孩子的右子树中插入导致不平衡 ③LR【A的左孩子的右孩子先左上旋再右上旋】:

2022-07-07 19:14:42 343 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除