![](https://img-blog.csdnimg.cn/20201117201856123.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Data Structures & Alg... (C)
文章平均质量分 96
数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数据元
m0rta1
优秀的判断力来自经验,但经验来自于错误的判断。涉及领域: Java后端开发/前端开发/PHP/Python/WEB安全/逆向+PWN/云计算
展开
-
深入理解并查集(Disjoint Set Union),并利用其解决相关问题
一、什么是并查集?首先字面意思是把相互联系的元素通过特定查询组成一个集合。规范化解释:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。二、并查集应用场景: 1. 图的连通性,可以用来判断哪些节点是连通的。也可以知道一个图一共能被分成几个相互独立的块。2. 区间类问题3. 连续子序列问题4. 经典最小生成树算法:Kruskal 算法5. 等等… 后期补充 总而言之原创 2021-11-17 00:26:55 · 2384 阅读 · 1 评论 -
无向图(无权值)的邻接矩阵与邻接表储存方式及其DFS,BFS遍历
求下图中无向图的邻接矩阵与邻接表储存方式及其DFS,BFS遍历一、 无向图(无权值)的邻接矩阵存储方式及其DFS,BFS遍历邻接矩阵的储存表示:广度优先遍历需要用到队列操作,因此还需要定义一下队列的存储结构具体代码:#include <stdio.h>#define MaxVex 100 //最大顶点数#define TRUE 1#define FALSE 0typedef char VertexType;原创 2020-11-26 22:56:21 · 7428 阅读 · 0 评论 -
二叉树的构建、前中后层序遍历、深度、节点数、叶子节点数,子树转置
代码演示:#include <stdio.h>#include <stdlib.h>#define MAX 20#define NULL 0#define OK 1#define False 0typedef char TElemType;typedef int Status;typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild;} BiT..原创 2020-11-12 18:13:33 · 187 阅读 · 2 评论 -
稀疏矩阵之十字链表压缩存储并且实现两个稀疏矩阵相加
稀疏矩阵的十字链式压缩存储:代码演示:/* * Date: 2020/11/10 * Author: XiaoXiangWei * Work: Sparse matrix addition * */#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;原创 2020-11-12 17:53:23 · 1332 阅读 · 1 评论 -
稀疏矩阵之三元组压缩存储并且转置
代码演示:// δ=t/(n?m) <= 0.05 则证明是稀疏矩阵/* 稀疏矩阵的类型说明及转置算法 */#include<stdio.h>#include<stdlib.h>#define MAX 12typedef int datatype;typedef struct{ int i, j; // 行号、列号 datatype v; // 元素值} node;typedef struct{..原创 2020-11-12 17:38:37 · 1172 阅读 · 0 评论 -
复习理解串的基本操作
知识给人重量,成就给人光彩,大多数人只是看到了光彩,而不去称量重量字符串、简称串,它也是一种重要的线性结构。计算机中处理的大部分数据都是字符串数据,例如,学生学籍信息系统的姓名、性别、家庭住址、院系名称等信息都属于字符串数据。串广泛应用于各种专业的信息管理、信息检索、问答系统、机器翻译等系统处理中。一、顺序串的基本操作:1.1 基本操作代码实现:#include <stdio.h>#include <stdlib.h>#include <string..原创 2020-10-22 20:01:54 · 1021 阅读 · 0 评论 -
复习理解队列的常用操作
不读书则愚,不思考则浅;不多练则生,不巧用则钝。一 .队列的概念:只允许在一端插入数据操作,在另一端进行删除数据操作的特殊线性表;进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列);队列具有 先进先出(FIFO)的特性。二、顺序队列:(1) 队头不动,出队列时队头后的所有元素向前移动缺点: 操作是如果出队列比较多,要搬移大量元素,方法不可取。(2)队头移动,出队列时队头向后移动一个位置问题: 如果还有新元素进行入队列容易造成假溢出。假溢出:顺序队.原创 2020-10-13 20:39:05 · 402 阅读 · 0 评论 -
复习理解栈实现及其应用
几个月前学的,回来记笔记,温故而知新…一、栈1、什么是栈栈(Stack)是一种线性存储结构,它具有如下特点:(1)栈中的数据元素遵守”先进后出”(First In Last Out)的原则,简称FILO结构。(2)限定只能在栈顶进行插入和删除操作。2、栈的特点栈:后进先出( LIFO-last in first out ) : 最后插入的元素最先出来。3、栈的基本操作栈主要有以下几种基本操作:(1)push(): 向栈内压入一个成员;(2)pop(): 从栈顶弹出一个.原创 2020-09-30 20:43:10 · 329 阅读 · 0 评论 -
数据结构与算法:顺序表和链表的常用操作 (很全,基本涵盖本章所有算法)
前言:数据结构中的表操作算是里面较为简单的章节,但也比较重要,3月份学完的此章节,左思右想今天还是写篇 关于顺序表和链表的博客。 ps : 复制代码可以在编译器上直接运行。一、顺序表概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改。顺序表一般可以分为: 静态顺序表:使用定长数组存储。 动态顺序表:使用动态开辟的数组存储。#define N 100 typedef int SLDataTyp原创 2020-06-23 09:39:20 · 2231 阅读 · 0 评论 -
数据结构与算法: 特殊矩阵的压缩存储
一.三角矩阵的概念以主对角线划分三角矩阵有下三角矩阵和上三角矩阵下三角矩阵:矩阵(除主对角线)的上三角部分的值均为一个常数C或者0上三角矩阵:与下三角矩阵相反图示:(图中蓝色主对角线部分元素(一般情况)永远不都为一个常数或者0) 二.压缩原理根据上、下三角矩阵的特殊性(有一小半部分的元素都为一个常数...原创 2020-06-15 23:24:08 · 5137 阅读 · 0 评论