自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知世同学的小书房

欢迎爱学习的小伙伴呀

  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021.1.4--我的20岁生日感悟

没想到期待已久的20岁生日就这么草率的结束了,没有蛋糕、很少的祝福,在学业的压力和焦虑中度过。今年真的是几位不顺的一年,身体上的伤害导致了我严重的心理压力,自从骨折以来,我从没觉得开心过,就连笑也感觉是在勉强自己。今年真的在用实际教育着我消极情绪并没有用,遇到问题行动才是真。12初的时候刚拆石膏,我用了一周学完了落下的数据结构,并一口气学完了所有数据结构的课程,开始在SCDN上写博客,学会了用markdown记笔记。后来一周有一口气学完了所有C++课程,将b站上300p的课程一口气看完了,并且认真记了

2021-01-04 20:39:55 2742 22

原创 排序之归并排序和基数排序

2路归并排序void MergeSort(int arr[],int copy[],int left,int right)//left=0,right=n-1{ if(left>=right) { return; } int mid=(left+right)/2; MergeSort(arr,copy,left,mid);//不断递归将其划分成最小的部分存进copy中,再让mid两边的数据进行比较之后放入arr中 MergeSort(

2020-12-25 01:22:29 201

原创 排序之选择排序

简单选择排序void SelectSort(int arr[],int n){ for(int i=0;i<n-1;i++)//查询数组中每一个位置的最小值,将找到的最小值与目前位置交换 //只需要查找n-1次,因为只剩下最后一个一定是最大值 { j=SelectMinKey(arr,i,n); swap(arr[i],arr[j]) }}void SelectMinKey(int arr[],int k,int n){

2020-12-25 01:13:25 212

原创 排序之交换排序

冒泡排序void BubbleSort(int arr[],int n){ for(int i=0;i<n-1;i++) { for(int j=0;j<n-1-i;j++)//每经过一次排序,最大的数就已经确定,因此需要排序的个数就要减少 { if(arr[j]>arr[j+1]) { swap(arr[j],arr[j+1]); }

2020-12-25 00:36:31 284

原创 排序之插入排序

排序的稳定性对于数据中相同的元素,他们在原始数据中的内容到顺序在排序后前后顺序不变内部排序和外部排序划分:是否在内存内内部排序是完全在内存中进行,而外部排序有些是在内存外部进行的排序的分类插入排序交换排序选择排序归并排序计数排序排序的操作比较移动直接插入排序算法int sqlis[]={6,1,87,14,89,15,78,12,67,23};void InsertSort(int aqlis[],int n){ for(int i=1;i<

2020-12-24 23:52:21 293

原创 查找之Hash表

哈希函数哈希函数数据在哈希表中最好分布均匀最好能减少冲突一般使用取余法解决冲突的方法开方定值法:线性探测链地址法再哈希法建立一个公共的溢出区typedef struct node{ int data; struct node*link;}NODE;typedef NODE* HashTable[13];//HashTable[]里存储的数据是NODE类型的void init(HashTable*ht){ for(int i=0;i<13;

2020-12-24 23:42:04 81

原创 查找之平衡二叉树

平衡二叉树1.性质首先必须是一个二叉搜索树左右子树深度相差绝对值不超过1平衡因子BF:该结点右子树的深度减去它的左子树的深度,因此平衡二叉树上所有结点的平衡因子只可能是1,-1或02.AVL树代码实现创建AVL树结构typedef struct AVLnode{ int data; AVLtree*lchild; AVLtree*rchild; int bf;}AVLnode;typedef struct AVLtree{ AVLnode*r

2020-12-24 21:23:46 418

原创 二叉树之兄弟孩子树

孩子兄弟树将图转换为二叉树,找到一个节点,左孩子有兄弟,将其用孩子兄弟法转换为一个二叉树,再按二叉树的方式将其存储typedef struct node{ char data; struct node*child; struct node*sibling;}*PNODE,NODE;typedef struct tree{ PNODE root; char ref;}TREE;void init(TREE*t);PNODE create(TREE*

2020-12-24 19:24:09 594 1

原创 线索化二叉树及其基本方法实现

线索化二叉树的初始化线索化二叉树是根据中序遍历产生的,当一个左右子树节点为空时,使其左子树指向其前驱节点,右子树指向其后继结点为了区分指针到底指向的是前驱后继节点还是左右子树,需要在创建树的节点时再创建两个空间分别用来标记其左右指针指的是什么typedef enum{LINK,THREAD}TAG;typedef struct node{ char data; struct node*lchild; struct node*rchild; TAG rtag;

2020-12-24 19:07:06 558 1

原创 二叉树的恢复实现

根据二叉树的前中后序列恢复二叉树的结构 char* VLR="ABCDEFGH"; char* LVR="CBEDFAGH"; char* LRV="CEFDBHGA"; int n=strlen(VLR);1.根据前序和中序恢复二叉树:void create1(PNODE p,char*VLR,char*LVR,int len){ if(len!=0) { int k=0; while(VLR[0]!=LVR

2020-12-24 19:06:13 323 1

原创 二叉树及其基本方法实现

二叉树的创建在创建这个树时一定要以数据形式创建,若以指针形式创建,则该树一直是地址形式,没有具体的数值,在后续操作中也无法对树进行具体值的创建。typedef struct node{ char data; struct node *lchild; struct node*rchild;}*PNODE,NODE;typedef struct TREE{ PNODE root; char ref;//用来标记为空的节点}*PTREE,TREE;vo

2020-12-24 19:05:14 148 1

原创 稀疏矩阵及其转置算法

稀疏矩阵的构造typedef struct triple//三元数组{ int i; int j; int num;}triple;typedef struct smatrix{ triple data[20]; int m;//原矩阵行数 int n;//原矩阵列数 int p;//非零元素的个数}smatrix;void create(int a[][7],int h,int l,smatrix*sm);void print(sm

2020-12-24 13:48:59 1456 1

原创 队列之循环队列

循环队列typedef struct queue//用数组创建的队列{ int *pbase; int front; int rear;}QUEUE;int main(){ QUEUE Q; init(&Q); en_queue(&Q,1); en_queue(&Q,2); en_queue(&Q,3); en_queue(&Q,4); en_queue(&Q,5);

2020-12-24 12:44:29 64

原创 栈及其栈应用

栈typedef struct node{ int data; struct node*pnext;}NODE,*PNODE;typedef struct stack{ PNODE ptop; PNODE pbottom;}STACK,*PSTACK;void init(PSTACK);void push(PSTACK ps,int val);void show(PSTACK ps);bool is_empty(PSTACK ps);bool pop(P

2020-12-24 12:23:42 172

原创 四种链表的基本操作

单链表的基本操作typedef struct node{ int data; struct node*pnext;}*PNODE,NODE;PNODE create_list();void show_list(PNODE phead);int length_list(PNODE phead);bool is_empty(PNODE phead);void sort_list(PNODE phead);int main(){ PNODE phead=NULL; p

2020-12-24 11:29:34 484

原创 查找之二叉搜索树

一.查找1.静态查找与动态查找动态查找是对数据进行更改,而静态查找对数据不进行更改二. 二叉搜索树2.1性质:若他的左子树不空,则左子树上所有结点的值均小于它的根节点的值若它的右子树不空,则右子树上所有结点的值均大于它根节点的值它的左右子树也都是二叉排序树2.2创建二叉搜索树typedef struct node{ int data; struct node*lchild; struct node*rchild;}BSTnode;typedef str

2020-12-20 18:05:27 171

原创 有向无环图及其应用

一.有向无环图(DAG图)工程是否能顺利完成求得完成工程的最小时间二.拓扑排序(AOV网,顶点表示活动)由集合上的一个偏序得到集合上的一个全序的操作叫拓扑排序在有向无环图中判断工程是否能完成1.说明采用了邻接表存储树结构运用了栈来存储所有入度为0的元素下标,在出栈时将他们输出并遍历减少所有与他们相连的点的入度2.代码void topologicalsort(Graph*g){//创建一个count数组用来存储所有顶点的入度 int*count=(int *)mal

2020-12-20 16:22:02 1664

原创 最小生成树(MST)

最小生成树(MST)连通n个城市,至少需要n-1条边,若是无向图,则连接n个城市,最多可以设置n(n-1)/2条线路,求如何求得n-1条路使花费最少有两种算法实现:Prim算法和Kruskal算法一.Prim算法1.说明从一个点开始找,找到与其相邻的最小的边,将点并入与第一个点的集合,将他们作为集合寻找最小的点,直到所有顶点被加入集合,就找到最小花费的路设置lowcost[i],i表示边的终点,当lowcost[i]=0时,说明以i为终点的边并入到了MST中设置mst[i]:表示对应lo

2020-12-19 21:31:10 485 1

原创 深度优先遍历和广度优先遍历

一.深度优先遍历(DFS)首先创建一个visited[]数组用来标记是否被访问过,未被访问过赋值为0将图、一个顶点和visited[]数组传入函数,进行递归遍历void DFS(Graph*g,int v,bool visited[])//v为点v的位置{ print("%c-->",getv(v));//从v的位置得到v,并将其输出 visited[v]=1;//表示已经被访问过了 int w=getfirstneighbor(g,getv(v));//得到第一个

2020-12-19 18:50:47 400 1

原创 图的存储方式

图的存储方式邻接矩阵用矩阵存储边用数组存储点可以完成有向图、无向图和带权图,区别于矩阵上的数值宏定义存储点的最大容量#define MAX_V 10创建数据结构体typedef struct graph{ int maxv;//存放点的最大容量 int numv;//存放点的数量 int numedges;//存放边的数量 char**edges;//存放边的矩阵结构 char *v;//存放点的数组结构}GRAPH初始化图

2020-12-19 17:25:36 197 2

东北大学软件专业期末复习软件需求分析资料大礼包.zip

东北大学软件学院期末复习软需资料,包括近10年软考题(分析师和设计师)、知识点笔记、软考题总结知识点以及软需知识点思维导图。期末复习加油哟(^U^)ノ~YO

2021-01-08

空空如也

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

TA关注的人

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