
计算机技术
文章平均质量分 85
课程跟的是王道计算机考研的咸鱼老师,对每一章的内容都进行了总结,课后习题部分可以参考专栏《数据结构》上机实验。
—Miss. Z—
Good Good Study,Day Day Up
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构—树与二叉树——并查集的应用
利用并查集判断图是否有环以及图中连通分量的个数邻接矩阵法#include<stdio.h>#include<math.h>#define Inf 32767 //定义∞#define MaxVertenNum 20 //顶点数目的最大值typedef char VertexType; //顶点的数据类型typedef int EdgeType; //存放顶点信息typedef struct{ VertexType Vex[MaxVertenNum]; //顶点表原创 2021-12-02 18:29:30 · 1150 阅读 · 1 评论 -
数据结构—树与二叉树(Part Ⅶ)—并查集
并查集及其应用原创 2021-11-29 22:40:01 · 1445 阅读 · 4 评论 -
树与二叉树——补充总结
二叉排序树二叉排序树,又称二叉查找树(BST,Binary Search Tree)。一棵二叉树或者是空二叉树,或者是具有如下性质的二叉树:左子树上所有结点的关键字均小于根结点的关键字;右子树上所有结点的关键字均大于根结点的关键字。左子树和右子树又各是一棵二叉排序树。查找操作二叉排序树的查找是从根结点开始,沿某个分支逐层向下比较的过程。若二叉排序树非空,先将给定值与根结点的关键字比较,若相等,则查找成功;若不等,如果小于根结点的关键字,则在根结点的左子树上查找,否则在根结点的右子树上查找。原创 2021-11-25 18:48:14 · 1112 阅读 · 0 评论 -
C语言实现两个多项式相加&相减&相乘运算
1原创 2021-11-15 07:58:00 · 7479 阅读 · 5 评论 -
数据结构—查找(Part Ⅲ)—B树/B+树 & 散列查找
介绍B树以及B+树、哈希冲突的两种解决方法等原创 2021-09-23 18:23:59 · 2069 阅读 · 0 评论 -
数据结构—排序(Part Ⅳ)—外部排序
数据结构-排序(第十章)的整理笔记,若有错误,欢迎指正。外部排序多路平衡归并与败者树置换-选择排序(生成初始归并段)最佳归并树原创 2021-09-21 13:57:28 · 670 阅读 · 0 评论 -
数据结构—排序(Part Ⅲ)—归并排序&基数排序
数据结构-排序(第十章)的整理笔记,若有错误,欢迎指正。归并排序和基数排序原创 2021-09-20 07:26:02 · 937 阅读 · 0 评论 -
数据结构—排序(Part Ⅱ)—交换排序&选择排序
数据结构-排序(第十章)的整理笔记,若有错误,欢迎指正。交换排序所谓交换,是指根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。基于交换的排序算法很多,这里主要介绍冒泡排序和快速排序。冒泡排序(bubble sort)冒泡排序的基本思想是:从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i]),则交换它们,直到序列比较完。我们称它为第一趟冒泡,结果是将最小的元素交换到待排序列的第一个位置(或将最大的元素交换到待排序列的最后一个位置),关键字最小的原创 2021-09-19 12:57:23 · 1676 阅读 · 0 评论 -
数据结构—排序(Part Ⅰ)—直接插入/折半插入/希尔排序
数据结构-排序(第十章)的整理笔记,若有错误,欢迎指正。排序{基本概念{稳定性衡量标准:时间复杂度、空间复杂度内部排序{插入排序{直接插入排序折半插入排序希尔排序交换排序{冒泡排序快速排序选择排序{简单快速排序堆排序归并排序基数排序外部排序——多路归并排序排序\begin{cases} 基本概念 \begin{cases} 稳定性\\ 衡量标准:时间复杂度、空间复杂度 \end{cases} \\ 内部排序 \begin{cases} 插入排序原创 2021-09-18 06:40:57 · 3239 阅读 · 0 评论 -
数据结构—查找(Part Ⅱ)—红黑树
B树和B+树B树,又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树,或为满足如下特性的m叉树:树中每个结点至多有m棵子树,即至多含有m-1个关键字。若根结点不是终端结点,则至少有两棵子树。除根结点外的所有非叶结点至少有⌈m2⌉⌈\frac m2⌉⌈2m⌉棵子树,即至少含有⌈m2⌉−1⌈\frac m2⌉-1⌈2m⌉−1个关键字。所有非叶结点的结构如下:nP0P_0P0K1K_1K1P1P_1P1K2K_2K2原创 2021-09-17 07:28:21 · 1074 阅读 · 0 评论 -
数据结构—查找(Part Ⅰ)—顺序/折半/分块查找
数据结构-查找(第九章)的整理笔记,若有错误,欢迎指正。原创 2021-09-16 06:47:56 · 1706 阅读 · 0 评论 -
数据结构—图(Part Ⅲ)—拓扑排序&关键路径
数据结构-图(第八章)的整理笔记,若有错误,欢迎指正。图的应用原创 2021-09-15 06:44:00 · 2277 阅读 · 3 评论 -
数据结构—图(Part Ⅱ)—最小生成树 & 最短路径
数据结构-图(第八章)的整理笔记,若有错误,欢迎指正。图的应用图的应用主要包括:最小生成(代价)树、最短路径、拓扑排序和关键路径。最小生成树一个连通图的生成树包含图的所有顶点,并且只含尽可能少的边。对于生成树来说,若砍去它的一条边,则会使生成树变成非连通图;若给它增加一条边,则会形成图中的一条回路。对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合,若T为R中边的权值之和最小的那棵生成树,则T称为G的最小生成树(原创 2021-09-13 08:22:16 · 4947 阅读 · 1 评论 -
数据结构—图的深度优先搜索
图的遍历原创 2021-09-12 08:36:37 · 2031 阅读 · 0 评论 -
数据结构—图的广度优先搜索
图的存储及基本操作原创 2021-09-11 07:53:00 · 1588 阅读 · 0 评论 -
数据结构——图的邻接表法实现代码
不带权有向图typedef struct{ VNode adjlist[MaxVertexNum]; //邻接表的头结点数组 int vexnum, arcnum; //图中的顶点数和弧数}AdjGraph; //完整的图邻接表类型int CountOutDegree(AdjGraph g,VertexType ch) //求顶点出度{ int outdegree = 0; int i, j; for (i = 0; i < Num; i++) if (g.adjlist[.原创 2021-09-10 07:58:31 · 1364 阅读 · 1 评论 -
数据结构——图的邻接矩阵法实现代码
不带权无向图#include<stdio.h>#define MaxVertenNum 6 //顶点数目的最大值typedef char VertexType; //顶点的数据类型typedef int EdgeType; //存放顶点信息typedef struct{ VertexType Vex[MaxVertenNum]; //顶点表 EdgeType Edge[MaxVertenNum][MaxVertenNum]; //邻接矩阵 int vexnum, edgenum原创 2021-09-09 07:49:47 · 4532 阅读 · 1 评论 -
数据结构—邻接表法代码实现
邻接表法图的邻接表(adjacency list)是一种顺序与链式存储相结合的存储方法。对于含有n个顶点的图,每个顶点建立一个单链表,第i(0≤n-1)个单链表中的结点表示关联于顶点i的边(对有向图是以顶点i为起点的边),也就是将顶点i的所有邻接点(对有向图是出边邻接点)链接起来,其中每个结点表示一条边的信息。每个单链表再附设一个头结点,并将所有头结点构成一个头结点数组adjlist,adjlist[i]表示顶点i的单链表的头结点,这样就可以通过顶点i快速地找到对应的单链表。在邻接表中有两种类型的原创 2021-09-08 07:51:08 · 3606 阅读 · 2 评论 -
数据结构—图(Part Ⅰ)—图的存储&遍历
图的基本概念原创 2021-09-07 08:33:02 · 1507 阅读 · 0 评论 -
树的双亲表示法&孩子表示法代码实现
孩子表示法孩子链存储结构的类型声明typedef struct{ int child; //孩子结点在数组中的位置 struct CTNode *next; //下一个孩子}CTNode;typedef struct{ ElemType data; struct CTNode *firstChild; //第一个孩子}CTBox;typedef struct{ CTBox nodes[MAX_TREE_SIZE]; int n,r; //结点数和根的位置}CTree;原创 2021-09-06 07:00:55 · 6951 阅读 · 13 评论 -
数据结构—邻接矩阵存储法代码实现
邻接矩阵法无向图#include<stdio.h>#define MaxVertenNum 6 //顶点数目的最大值typedef char VertexType; //顶点的数据类型typedef int EdgeType; //存放顶点信息typedef struct{ VertexType Vex[MaxVertenNum]; //顶点表 EdgeType Edge[MaxVertenNum][MaxVertenNum]; //邻接矩阵 int vexnum, edge原创 2021-09-05 08:22:01 · 2783 阅读 · 0 评论 -
数据结构—树与二叉树(Part Ⅵ)——平衡二叉树&哈夫曼树
平衡二叉树哈夫曼树和哈夫曼编码哈夫曼树的定义在许多应用中,树中结点常常被赋予一个表示某种意义的数值,称为该结点的权。从树的根到任意结点的路径长度(经过的边数)与该结点上权值的乘积,称为该结点的带权路径长度。树中所有叶结点的带权路径长度之和称为该树的带权路径长度,记为WPL=∑i=1nwiliWPL=\sum_{i=1}^nw_il_iWPL=∑i=1nwili,其中,wiw_iwi是第i个叶结点所带的权值,lil_ili是该叶结点到根结点的路径长度。在含有n个带权叶结原创 2021-09-04 09:47:24 · 1127 阅读 · 0 评论 -
数据结构—树与二叉树(Part Ⅴ)—二叉排序树
树与二叉树原创 2021-09-02 08:02:59 · 832 阅读 · 0 评论 -
树的孩子兄弟表示法完整代码实现
#include<stdio.h>#include<malloc.h>typedef char ElemType;#define MaxSize 15typedef struct CSNode{ ElemType data; struct CSNode* firstchild, * nextsibling;}CSNode, * CSTree;typedef struct{ CSNode* data[MaxSize]; //存放栈中的数据元素 int top;原创 2021-09-01 06:58:13 · 8204 阅读 · 5 评论 -
数据结构—树与二叉树(Part Ⅳ)—二叉树的遍历(递归&非递归)
数据结构-树与二叉树(第七章)的整理笔记,若有错误,欢迎指正。树、森林原创 2021-08-28 07:50:37 · 1101 阅读 · 0 评论 -
数据结构—树与二叉树(Part Ⅲ)—二叉树的构造&线索二叉树
数据结构-树与二叉树(第七章)的整理笔记,若有错误,欢迎指正。二叉树的遍历和线索二叉树原创 2021-08-27 06:46:31 · 1032 阅读 · 0 评论 -
数据结构—树与二叉树(Part Ⅱ)—二叉树的顺序/链式存储
数据结构-树与二叉树(第七章)的整理笔记,若有错误,欢迎指正。二叉树的存储结构顺序存储结构二叉树的顺序存储结构就是用一组地址连续的存储单元来存放二叉树的数据元素,因此必须确定好树中各数据元素的存放次序,使得各数据元素在这个存放次序中的相互位置能反映出数据元素之间的逻辑关系。由二叉树的性质4可知,对于完全二叉树和满二叉树,树中结点的层序编号可以唯一地反映出结点之间的逻辑关系,所以可以用一维数组按从上到下、从左到右的顺序存储树中的所有结点值,通过数组元素的下标关系反映完全二叉树或满二叉树中结点之间的逻原创 2021-08-26 09:34:31 · 1788 阅读 · 3 评论 -
数据结构—树与二叉树(PartⅠ)—树的基本概念&二叉树的概念和性质
数据结构-树与二叉树(第七章)的整理笔记,若有错误,欢迎指正。原创 2021-08-25 08:19:59 · 1669 阅读 · 0 评论 -
数据结构—稀疏矩阵和广义表 Ⅹ
数据结构-数组和广义表(第六章)的整理笔记,若有错误,欢迎指正。特殊矩阵的压缩存储稀疏矩阵稀疏矩阵的三元组表示从一个二维稀疏矩阵创建其三元组表示三元组元素的赋值将指定位置的元素值赋给变量输出三元组稀疏矩阵转置稀疏矩阵的十字链表表示...原创 2021-08-22 08:41:59 · 1012 阅读 · 0 评论 -
数据结构—数组和特殊矩阵 Ⅸ
数据结构-数组和广义表(第六章)的整理笔记,若有错误,欢迎指正。Link:C语言中的数组!需要注意的是,本章的数组是作为一种数据结构讨论的,而C/C++中的数组是一种数据类型,前者可以借助后者来存储,像线性表的顺序存储结构(即顺序表)就是借助一维数组这种数据类型来存储的。但二者不能混淆。数组是具有相同类型的数据元素的有限序列,可以将它看作是线性表的推广。数组的存储结构在设计数组的存储结构时,通常将数组的所有元素存储到存储器的一块地址连续的内存单元中,即数组特别适合采用顺序存储结构来存储。一维原创 2021-08-21 14:25:34 · 350 阅读 · 0 评论 -
数据结构—递归 Ⅷ
1. 假设串采用顺序串存储,设计一个算法Strcmp(s),按字典顺序比较两个串s和t的大小。算法思想:比较s和t的长度:①两者相等时返回0;②s的长度大于t的长度,返回1;③s的长度小于t的长度,返回-1。长度相等时比较对应字符:①若s的字符大于的字符,返回1;②若s的字符小于t的字符,返回-1;③若s的字符等于t的字符,按上述规则继续比较。int Compare(SqString s, SqString t){ int i, result; if (s.length原创 2021-08-19 07:03:45 · 991 阅读 · 2 评论 -
最长公共子串LCS (Longest Common Subsequence) 算法
三个方法都有所借鉴,但代码部分是自己试着写出来的,虽然最后的运行结果都是正确的,但此过程中难免会有考虑不周全的地方,如发现代码某些地方有误,欢迎指正。同时有新的想法,也可以提出!采用顺序结构存储串,求串s和串t的一个最长公共子串。方法一算法思想:借助二维数组可以求出最长公共子串最后一个字符分别在s串和t串中的数组下标。此时可以从s中截取最长公共子串,也可以从t中截取。SqString MaxComStr(SqString s, SqString t){ SqString str; in原创 2021-08-17 07:17:05 · 2330 阅读 · 0 评论 -
数据结构—串的模式匹配
数据结构-串(第四章)的整理笔记,若有错误,欢迎指正。原创 2021-08-16 10:11:07 · 4246 阅读 · 2 评论 -
数据结构—链串 Ⅶ
串的模式匹配原创 2021-08-15 07:27:49 · 1823 阅读 · 0 评论 -
数据结构—顺序串 Ⅵ
数据结构-串(第四章)的整理笔记,若有错误,欢迎指正。可以参考和对比一下C语言里面的字符串:C语言 字符串串的基本操作{StrAssign(&s,cstr)—生成串DestroyStr(&s)—销毁串StrCopy(&s,t)—串的复制StrEqual(s,t)—判断串相等StrLength(s)—求串长Concat(s,t)—串的连接SubStr(s,i,j)—求子串InsStr(s1,i,s2)—子串的插入DelStr(s,i,j)—子串的删除RepStr(s,i,j,t原创 2021-08-14 06:19:55 · 2070 阅读 · 0 评论 -
数据结构—共享栈
数据结构-栈(Ⅳ)共享栈利用栈底位置相对不变的特性,可让两个顺序栈共享一个一维数组空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸。共享栈是为了更有效地利用存储空间,两个栈的空间相互调节,只有在整个存储空间被占满时才发生上溢。其存取数据的时间复杂度均为O(1),所以对存取效率没有什么影响。栈空条件:栈0空为top0==-1;栈1空为top==MaxSize。栈满条件:top0==top1-1。元素x进栈操作:进栈=操作为top0++;data[top0]=x;原创 2021-08-11 06:24:50 · 7122 阅读 · 4 评论 -
数据结构—栈和队列的应用 Ⅱ
数据结构—栈和队列的应用 Ⅰ栈在递归中的应用队列在层次遍历中的应用队列在计算机系统中的应用原创 2021-08-10 06:03:51 · 253 阅读 · 0 评论 -
数据结构-用栈模拟队列
利用两个栈S1、S2来模拟一个队列。利用两个栈S1和S2来模拟一个队列,当需要向队列中插入一个元素时,用s1来存放已输入的元素,即s1执行入栈操作。当需要出队时,则对s2执行出栈操作。由于从栈中取出元素的顺序是原顺序的逆序,所以必须先将S1中的所有元素全部出栈并入栈到S2中,再在S2中执行出栈操作,即可实现出队操作,而在执行此操作前必须判断S2是否为空,否则会导致顺序混乱。当栈S1和S2都为空时队列为空。总结如下:对S2的出栈操作用作出队,若S2为空,则先将S1中的所有元素送入S2。对S1的原创 2021-08-09 06:20:57 · 981 阅读 · 0 评论 -
数据结构—栈的应用 Ⅰ
栈在括号匹配中的应用遇到左括号就入栈,遇到右括号,就 “消耗”一个左括号。算法实现:#include<iostream>using namespace std;#define MaxSize 10typedef char ElemType;typedef struct Stack{ ElemType data[MaxSize]; int top;};void InitStack(Stack& s) //初始化栈{ s.top = -1;}b原创 2021-08-08 06:24:20 · 216 阅读 · 0 评论 -
数据结构—队列(Ⅴ)
队列的顺序存储结构队列的链式存储结构原创 2021-08-06 06:51:12 · 787 阅读 · 3 评论