自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 无向图的邻接表表示法

总结:1、邻接表表示由表头结点、邻接结点组成;2、为了方便插入边(即将两个结点连起来)的操作,定义边(两个邻接点下标+边权重);3、表头结点的权重存放的是结点的权重,邻接点的权重存放的是边权重!//无向图的邻接表表示法#include <stdio.h>#include <stdlib.h>#define MaxVertexNum 100typedef int Vertex;typedef int WeightType;typedef char DataType.

2021-04-19 21:23:19 2977 2

原创 图的邻接矩阵表示法

很简单,两部分。图GNode包含:1、二维矩阵G[][]2、顶点数3、边数4、结点的数据(可选)边ENode包含:1、是那两个结点的边(边的位置)2、边的权重weight通过Insert函数把边ENode插入图GNode中。//图的邻接矩阵表示法 #include <stdio.h>#include <stdlib.h>#define MaxVertexNum 100#define Infinity 65535typedef int Vertex;t

2021-04-11 22:09:59 249

原创 05-树8 File Transfer (25 分) 按秩归并

#include <stdio.h>typedef int ElementType;typedef int SetName;typedef ElementType SetType[10003];SetName Find(SetType S,ElementType X){ while(S[X]>=0) X=S[X]; return X;}void Union(SetType S,SetName Root1,SetName Root2){

2021-04-09 21:19:07 57

原创 并查集及其运算

要点:集合的查找与并中,下标可理解为结点元素的地址,Parent可理解为指向下一个地址的指针。//集合及运算 #include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct{ ElementType Data; int Parent;}SetType;int MaxSize;//MaxSize为最大的下标 int Find(SetType S[],ElementType X).

2021-04-09 14:47:41 101

原创 (完整版C语言代码)哈夫曼树的构造

图:最终构成的哈夫曼树//哈夫曼树的构造#include <stdio.h>#include <stdlib.h>#define MinSize -1000typedef struct HTNode *HuffmanTree;struct HTNode{ int Weight; HuffmanTree Left; HuffmanTree Right;};typedef HuffmanTree ElementType;typedef struct HeapNo.

2021-04-09 00:32:34 1419

原创 05-树7 堆中的路径 (25 分)+插入误解成最大堆的建立

//通过Insert函数建最大堆#include <stdio.h>#include <stdlib.h>#define MinSize -10001typedef struct HeapNode *MinHeap;struct HeapNode{ int *Elements; int Size; int Capacity;};MinHeap Create(int N){ MinHeap H=(MinHeap)malloc(sizeof

2021-04-08 16:54:57 56

原创 最大堆的基本操作

关于最大堆的DeleteMax函数,运行其中for循环步骤:1、判断条件: root的孩子是否存在2、若存在,找到最大的孩子3、判断最大孩子与item的大小4、若item大 break,此次没改变root的地址,结束for循环,将root结点赋值5、若item小,把大孩子赋给root结点。循环末尾赋值: root改为大孩子的下标,进行下次循环6、循环到4的情况,或:root的孩子不存在,结束循环, root结点赋值。//最大堆的基本操作#include <stdio.h>#in

2021-04-07 16:28:31 166

原创 04-树4 是否同一棵二叉搜索树+bug总结

看完小白专场,感觉也没啥难的。就自己开始写了。但是“最大N,多组合”的测试点一直通过不了,debug了一下午,一直找不到错误,都快崩溃了。于是逐一得把自己的代码换成老师的代码,寻找bug在哪里(下面注释的代码为老师的函数代码)。我常见的bug总结:1、敲代码时,字母经常敲错。2、if(T)、while(!T)之类的经常弄反了这个题目bug总结:1、漏了ResetTree函数2、鬼使神差地if(i=0;i<=N;i++),其实只要输入N个数据3、需要用scanf输入N个数据,提前retur

2021-04-06 18:27:39 247 3

原创 AVL树的插入函数+CSDN去水印办法+04-树5 Root of AVL Tree (25 分)

该图是把i=0,1,2,3,4依次插入空树所形成的AVL树,前序遍历结果是1 0 3 2 4。//AVL树的插入函数 #include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct AVLNode *Position;typedef Position AVLTree;struct AVLNode{ ElementType Data; AVLTree Left; AVLTree.

2021-04-06 11:09:28 109

原创 二叉搜索树的插入与删除+递归的数学原理

之前一直不太会用递归,想知道递归对应的数学原理。现在大概明白了。递归的数学原理是:数学归纳法。以下面二叉搜索树的插入为例:Insert(X,BST)的作用:是创建一个存储X数据的结点,并按二叉搜索树的规则插入,并返还二叉搜索树的根结点(简洁地说就是插入元素,返回根结点)。1、二叉树有0个结点,即BST为空,Insert函数代码成立。2、二叉树有一个结点时,Insert函数代码成立。3、假设Insert函数对小于等于n个结点的二叉树都成立。根据假设,则Insert函数对于有n+1个结点的二叉树成立

2021-04-05 11:23:27 201 1

原创 基本的非递归后序遍历+根据层序遍历改写的非递归前、中、后序遍历

讨论3.4 如何用堆栈实现后序遍历的非递归程序(来源与慕课陈越姥姥的《数据结构》)参考要点:(1) 借助堆栈实现前序遍历、中序遍历非递归程序的本质是利用堆栈模拟递归函数调用时的入栈和出栈过程。而前序遍历、中序遍历和后序遍历在递归函数执行时,结点(作为函数参数)的入栈和出栈过程是完全一样的。(2) 前序遍历是在结点入栈时输出结点信息,然后开始分别对该结点左右子树的遍历;而在中序遍历中,结点出栈时表明刚完成对该结点左子树的遍历,此时可输出该结点信息。(3) 后序遍历必须在左右子树均输出

2021-04-05 08:47:54 290

原创 03-树3 Tree Traversals Again (scanf的思考与递归不熟练)

#include <stdio.h>#include <stdlib.h>typedef int Tree;struct TNode{ int Data; Tree Left; Tree Right;}T[30];int *PreorderQ,P=-1;int *InorderQ,I=-1;int N,check=0;void GetPreQandInQ(){ scanf("%d",&N); PreorderQ=(int*)malloc(sizeo

2021-04-04 16:06:30 63

原创 03-树2 List Leaves (25 分)

#include <stdio.h>#define Null -1typedef int Tree;struct TNode{ Tree Left; Tree Right;}T[10];//全局变量,在定义的函数内部也可以调用 Tree BuildTree(struct TNode T[]){ int N; Tree Root=Null; char cl,cr; scanf("%d",&N); int check[N]; for(int i=0;i<N;

2021-04-03 17:09:03 35

原创 03-树1 树的同构 判断树是否同构的略简单方法

如何判断树的同构?分情况讨论:1、两颗树都为空,同构。2、两棵树有一颗为空,不同构。3、两棵树都不为空。(a) 根结点数据不相同(b) 根结点数据相同。要是r1的左子树与r2的左子树同构&&r1的右子树与r2的右子树同构,或r1的左子树与r2的右子树同构&&r1的右子树与r2的左子树同构,则同构。即:return (Ismorphic(T1[r1].Left,T2[r2].Right)&&Ismorphic(T1[r1].Right,T2[r2]

2021-04-03 14:21:56 1525

原创 Pop Sequence

#include<stdio.h> int main() { int N,M,K; int i,j,a[1000]; scanf("%d %d %d",&M,&N,&K); for(i=0;i<K;i++){ for(j=0;j<N;j++)scanf("%d",&a[j]); int stack[1000]={0},top=0;//创建一个栈 int num=1; j=0,stack[0]=num; while(j

2021-04-01 16:32:56 71

空空如也

空空如也

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

TA关注的人

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