
算法与数据结构基础
核心内功,百年不变
JunSIr_#
软件工程大三在读,工作语言Java/Go
展开
-
数据结构-二叉树的相关概念性质(包含树与森林转化)总结
数据结构-二叉树的相关概念性质(包含树与森林转化)总结目录数据结构-二叉树的相关概念性质(包含树与森林转化)总结一般二叉树性质二叉树类型满二叉树模型性质完全二叉树模型树、二叉树、森林互转树转二叉树森林转二叉树二叉树还原树二叉树还原森林一般二叉树性质二叉树具有以下性质:在二叉树的第n(n>=1)层最多有2^(n - 1)个结点深度为h(h>=0)的二叉树最少有h个结点,最多有...原创 2020-01-08 02:48:53 · 711 阅读 · 0 评论 -
衡量一个算法的优劣-时空复杂度简介
数据结构-算法-时间复杂度文章目录数据结构-算法-时间复杂度算法特性好算法的标准时间复杂度算法的控制结构算法执行时间T(n)转[O(n)时间复杂度]习题算法特性有穷:步骤有穷、时间有限确定:语句无二义可行:可运行可实现输入:输入可有可无输出:与输入有确定关系好算法的标准正确:能满足问题可读:方便阅读健壮:容错处理通用:对同数据类型的其他数据可用高效率低存储时间复...原创 2019-12-23 16:32:58 · 1598 阅读 · 0 评论 -
数据结构-绪论-基本概念与术语
数据结构-绪论-基本概念与术语目录数据结构-绪论-基本概念与术语数据元素(Data Element)数据项(Data Item)数据结构逻辑结构和存储结构基本数据类型抽象数据类型数据元素(Data Element)数据的基本单位,可由若干个数据项组成数据项(Data Item)数据元素可由若干个数据项组成,数据项是最小单位,也称字段field数据项可以是组合项数据结构广义指所...原创 2019-12-23 15:44:44 · 1117 阅读 · 1 评论 -
数据结构-哈希表-使用最简单的除留余数法实现基本操作
数据结构-哈希表-基本操作代码说明:本篇仅提供可运行代码,具体讲解笔记请进哈希本篇代码设计哈希表查找、插入操作代码(经VS2015、devC++编译运行通过)#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define...原创 2019-12-23 02:20:30 · 4256 阅读 · 0 评论 -
哈希表(散列表)必备基础知识
数据结构-查找-哈希表(散列表)查找-科班学习笔记本篇是查找第三篇,需要第一篇基本概念的基础,请前往查找1目录数据结构-查找-哈希表(散列表)查找-科班学习笔记哈希表哈希表的设计直接定址法除留余数法数字分析法哈希冲突的解决方法开放定址法线性探查法:平方探查法拉链法哈希查找哈希表哈希表是一种存储结构,它是一定长度的连续内存单元,它并未适合任何情况,主要适合记录的关键字与存储地址存在某种函...原创 2019-12-23 02:00:00 · 1307 阅读 · 0 评论 -
数据结构-树表-二叉排序树的插入与删除
本篇代码的讲解请参考数据结构-查找-树表(二叉排序树)查找-详细学习笔记可运行代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define F...原创 2019-12-23 00:14:10 · 726 阅读 · 0 评论 -
数据结构-查找-树表(二叉排序树)查找-科班学习笔记
数据结构-查找-树表查找-详细学习笔记本篇为查找的第二篇,相关基础概念参考第一篇查找1树表的查找是基于二叉排序树的,先来看看二叉排序树是什么二叉排序树(Binary sort tree)又称二叉查找树,也称二叉搜索树,它的特征是若它的左子树非空,则左子树上所有结点值(指关键字值)均小于根结点值;若它的右子树非空,则右子树上所有结点值均大于根结点值;左、右子树本身又各是一棵二叉排序...原创 2019-12-23 00:08:44 · 981 阅读 · 0 评论 -
数据结构-查找-线性表查找-科班学习笔记
数据结构-查找-线性表查找(顺序、二分、ASL)-详细学习笔记查找的博客会出三篇,此为第一篇,先得了解一些基本概念,如有基础的朋友可跳过,直接看算法查找基本概念专业名词查找:又称检索,是v指在某种数据结构中找出满足给定条件的元素查找表:由一组记录组成的表或文件,每个记录由若干个数据项组成关键字key:记录中能唯一标识该记录的数据内查找外查找:查找过程在内存进行称内查找,查找...原创 2019-12-22 19:55:11 · 1389 阅读 · 0 评论 -
数据结构-图的深度优先搜索和广度优先搜索(邻接表实现)
数据结构-图的深度优先搜索和广度优先搜索(邻接表实现)无需过分关注代码本身,核心在于代码的设计思路深度优先搜索利用递归算法实现,代码设计思路就是 :矩阵有两个for循环,临接表一个for循环对顶点表进行循环遍历加上一个while(p)与p=p->next,利用指针变量拿到该顶点->firstedge域(edgenode类型),再利用该指针变量->adjvex拿到该顶点相关...原创 2019-11-23 22:39:34 · 3814 阅读 · 0 评论 -
数据结构-图的深度优先搜索和广度优先搜索(邻接矩阵实现)
数据结构-图的深度优先搜索和广度优先搜索(邻接矩阵实现)无需过分关注代码本身,核心在于代码的设计思路深度优先利用递归算法实现,代码设计思路就是两个for循环表示对矩阵的每个元素进行一次访问递归函数确保深度(一进到底再出)广度优先利用队列先进先出进行辅助,代码设计思路就是两个for循环表示对矩阵每一个元素进行一次访问访问过的元素进队列,以队列中的首元素为基准搜索到与首元素有边...原创 2019-11-23 22:06:54 · 4787 阅读 · 1 评论 -
数据结构-图的存储-邻接表创建
数据结构-图的存储-邻接表创建源代码#include <stdio.h>#include <stdlib.h>#define MAXVEX 20typedef char VertexType;/*边表结点*/ typedef struct EdgeNode { int adjvex; struct EdgeNode *next;}EdgeNode;...原创 2019-11-23 20:02:56 · 939 阅读 · 0 评论 -
数据结构-图的存储结构-邻接矩阵
数据结构-图的存储结构-邻接矩阵源代码源代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXVE...原创 2019-11-23 17:23:18 · 872 阅读 · 0 评论 -
数据结构-图的各种乱七八糟概念术语总结
数据结构-图的各种乱七八糟概念术语总结在学习树的时候觉得概念是真的多,但来的图章节的时候,觉得树的概念还是友好多了…故此针对树章节的概念与属于做出总结目录数据结构-图的各种乱七八糟概念术语总结简单图度完全图稀疏图和稠密图子图路径路径长度简单路径回路/环连通连通图连通分量强连通图权和网简单图不存在顶点到其自身的边,且一条边不重复出现度无向图中,一个顶点所关联的边的数目称该顶点的度...原创 2019-11-21 12:47:24 · 780 阅读 · 1 评论 -
数据结构-线索二叉树基本操作源代码(C/C++实现)
数据结构-线索二叉树基本操作源代码(C/C++实现)关键点理解中序遍历有隔一个结点为一个叶子结点的特点–>叶子结点孩子指针为NULL—>利用起来,叶子结点左边域空间方指向前驱结点,前驱结点若无右孩子结点,则前驱结点的右孩子指针域指向当前结点当真不知道是哪个个鬼才发明的结构…光理解就要好半天源代码#include "string.h"#include "stdio.h" ...原创 2019-11-21 00:04:35 · 1397 阅读 · 0 评论 -
数据结构-二叉树的基本操作(含先中后序遍历)
数据结构-二叉树的基本操作(含先中后序遍历)本代码所用二叉树结构示意图源代码#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#defin...原创 2019-11-20 15:17:58 · 941 阅读 · 0 评论 -
数据结构实现稀疏矩阵(采用三元组表示)的基本运算
数据结构实现稀疏矩阵(采用三元组表示)的基本运算目的领会稀疏矩阵三元组存储结构及基本算计运算内容假设n*n的稀疏矩阵A采用三元组表示,设计一个程序实现以下功能生成以下两个稀疏矩阵的三元组a和b输出a转置矩阵的三元组输出a+b的三元组输出a*b的三元组源代码(经VS、decC++编译通过)#include <stdio.h>#include <stdboo...原创 2019-11-19 16:52:05 · 13016 阅读 · 2 评论 -
数据结构递归算法-高效求解x的n次方(C语言实现)
数据结构递归算法-高效求解x的n次方(C语言实现)目录数据结构递归算法-高效求解x的n次方(C语言实现)参数极端情况导出极端过程操作源代码这个问题非常类似递归求解斐波那契数列,但该比之简单一点,首先把问题代入递归框架分析一遍参数底数x,n次方极端情况导出极端过程x^3递归自底向上原则->(xx)x …->(x)x->1x->x^0 -&g...原创 2019-11-18 22:21:09 · 9402 阅读 · 2 评论 -
数据结构递归算法-汉诺塔问题C语言实现
数据结构递归算法-汉诺塔问题C语言实现本问题的核心不是让你搞清楚解决汉诺塔问题的每一步,而是如何由汉诺塔解法转化为我们的递归代码递归算法切莫想要全盘搞清每一步,这就需要我们熟练掌握递归框架,这样才能快速由解法实现我们的递归算法,核心点在于操作方法的确定,极端情况导出递归的步骤,以及递归出口的确定问题描述/*有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)...原创 2019-11-18 20:55:01 · 1816 阅读 · 0 评论 -
数据结构实现顺序串的各种模式匹配算法
数据结构实现顺序串的各种模式匹配算法注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算流程建立目标串s=abcabcdabcdeabcdeabcdefabcdefg 和模式串 t =abcdeabcdefab采用简单匹配算法求t在s中的位置由模式串t求出next数组值和nextval数组值采用KMP算法求t在s中的位置采用改进的KMP算法t在s...原创 2019-10-29 00:20:06 · 5234 阅读 · 4 评论 -
数据结构顺序串的基本操作(C/C++实现)
数据结构顺序串的基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算流程建立串 s = ‘’abcdefghijklnm’'和串s1 = ‘’xyz‘’输出串s输出串s的长度在串s的第9个字符位插入串s1而产生串s2输出串s2删除串s的第2个字符开始的5个字符而产生串s2输出串s2将串s的第2个字符开始的第5个字符替...原创 2019-10-29 00:19:26 · 10861 阅读 · 4 评论 -
用栈解决N皇后问题(超详细注释、C/C++实现)
用栈解决N皇后问题(超详细注释、C/C++实现)目的:深入掌握栈应用的算法设计内容:编写一个程序,求解n皇后问题,即在n*n方格棋盘上放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线皇后个数n由用户输入,其值不能超过20,输出所有的解采用类似于栈求解迷宫问题的方法GitHub地址(包含.cpp文件和可执行程序exe)N皇后问题 -by- GitHub源代码(经VS...原创 2019-10-26 16:47:32 · 5891 阅读 · 4 评论 -
数据结构之队列的应用-编写病人看病模拟程序(C/C++实现)
数据结构之队列的应用-模拟病人排队就诊小程序(C/C++实现)实验目的:掌握队列应用和算法设计实验内容:编写一个程序,反映病人到医院排队看医生的情况,在病人排队过程中主要重复下面两件事病人到达诊室,将病历本交给护士,排到等待队列中候诊护士从等待队列中取出下一位病人的病历,该病人进入就诊室候诊程序设计分析要求模拟病人等待就诊这一过程,程序采用菜单方式,其选项及功能说明如下:排...原创 2019-10-26 02:43:44 · 10522 阅读 · 1 评论 -
数据结构链队基本操作(C/C++实现)
数据结构链队基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算流程初始化判空元素依次进队列出队一个元素并输出元素再次依次进队释放链队GitHub地址(包含.cpp文件和可执行程序exe)我的数据结构GitHub地址源代码(经VS2015、devC++编译器运行通过)#include "stdio.h" ...原创 2019-10-26 02:41:37 · 921 阅读 · 0 评论 -
数据结构链栈基本操作(C/C++实现)
数据结构链栈基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算流程1.初始化栈2.判断栈是否非空3.元素依次进栈4.判断栈是否非空5.输出出栈序列6.判断栈s是否非空7.释放栈GitHub地址(包含.cpp文件和可执行程序exe)我的数据结构GitHub地址源代码(经VS2015、devC++编译器运行通过)#...原创 2019-10-26 02:40:26 · 2090 阅读 · 0 评论 -
数据结构顺序栈基本操作(C/C++实现)
数据结构顺序栈基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算流程1.初始化栈2.判断栈是否非空3.元素依次进栈4.判断栈是否非空5.输出出栈序列6.判断栈s是否非空7.释放栈GitHub地址(包含.cpp文件和可执行程序exe)我的数据结构GitHub地址源代码(经VS2015、devC++编译器运行通过)...原创 2019-10-26 02:39:34 · 11233 阅读 · 0 评论 -
C/C++指针与引用基本操作与应用(作为函数参数进行传递)
C/C++指针与引用小结指针简介指针是一个值为内存地址的变量基本使用变量定义int year ; //定义变量year = 2016 ; //赋值指针定义int* ptr_year ; //定义指针ptr_year = &year //赋值(赋地址)*ptr_year = 1111 //修改0028FF44内的值空指针(null pointer...原创 2019-10-23 14:01:34 · 1118 阅读 · 1 评论 -
数据结构循环单链表基本操作(C/C++实现)
数据结构循环单链表基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算初始化循环单链表依次采用尾插法插入元素输出循环单链表输出循环单链表的长度判空判断循环单链表的第n个元素输出元素x的位置在第n个元素位置上插入f元素输出循环单链表删除循环单链表的第n个元素输出循环单链表释放循环单链表GitHub地址(包含...原创 2019-10-22 23:55:57 · 2743 阅读 · 0 评论 -
数据结构双链表基本操作(C/C++实现)
数据结构双链表基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算初始化双链表依次采用尾插法插入元素输出双链表输出双链表的长度判断双链表是否为空输出双链表的第n个元素输出元素x的位置在第n个元素位置上插入x元素输出双链表删除双链表的第n个元素输出双链表释放双链表GitHub地址(包含.cpp文件和可执行程...原创 2019-10-22 23:45:47 · 1694 阅读 · 0 评论 -
数据结构单链表基本操作(C/C++实现)
数据结构-单链表-基本操作(C/C++实现)注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据涉及基本运算初始化单链表依次采用尾插法插入元素输出单链表输出单链表的长度判断单链表是否为空输出单链表的第n个元素输出元素x的位置在第n个元素位置上插入x元素输出单链表删除单链表的第n个元素输出单链表释放单链表GitHub地址(包含.cpp文件和可执...原创 2019-10-22 23:38:40 · 6780 阅读 · 0 评论 -
数据结构顺序表基本操作(C/C++实现)
数据结构顺序表基本操作(C/C++实现)涉及基本运算初始化顺序表L依次插入abcde元素输出顺序表L输出顺序表L的长度判断顺序表L是否为空输出顺序表L的第3个元素输出元素a的位置在第4个元素位置上插入f元素输出顺序表L删除顺序表L的第3个元素输出顺序表L释放顺序表LGitHub地址(包含.cpp文件和可执行程序exe)我的数据结构GitHub地址源代码(经VS2...原创 2019-10-22 23:23:57 · 15389 阅读 · 0 评论