代码编织梦想

《数据结构》八大排序算法_是我来晚了!的博客-爱代码爱编程

冒泡排序 // 交换函数(交换地址) void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; } // 每一次冒泡将当前的最大元素找出来并放于数组最后面 void BubbleSort(int a[], int len, int select=1){ int key;

(数据结构)利用 C语言实现静态链表 —— 2022/3/16-爱代码爱编程

静态链表 —— 头文件结构体声明静态链表节点构造创建静态链表的函数(包括备用链表)构造展示静态链表元素的函数构造插入静态链表元素的函数构造删除静态链表元素的函数构造查找静态链表元素的函数构造更新静态链表元素的函数—— 主函数 —— 头文件 #include <stdio.h> #define maxSize 6 结构体声明静态

浅谈 C语言指针和链表 —— 2022/3/14-爱代码爱编程

指针和链表 —— 指针—— 链表结构体声明链表节点构造创建链表的函数构造展示链表的函数构造插入链表元素的函数构造删除链表元素的函数构造查找链表元素的函数构造更新链表元素的函数 —— 指针 此模板浅淡了一点指针的知识(指针的类型,函数中的地址传递…) #include <stdio.h> /* 指针作为函数的形式参

(数据结构)图的邻接表存储结构-爱代码爱编程

图的邻接表存储结构 一般来说,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表、邻接多重表和十字链表 本篇文章将优先介绍邻接表!!! 邻接点:在图中,如果两个点相互连通,且通过其中一个顶点,可直接找到另一个顶点,则称它们互为邻接点 邻接:指图中顶点之间有边或者弧的存在 邻接表存储图的实现方式:给图中的各个顶点独自建立一个链表,用节点

(数据结构)树的Child_Brother表示法-爱代码爱编程

树的孩子兄弟表示法 此前介绍过用双亲表示法和孩子表示法存储普通树,本篇文章将讲解最后一种存储普通树的方法... 最后一种方法是孩子兄弟!!! 树结构中,位于同一层的节点之间互为兄弟节点 图 1 普通树示意图 例如,上图 1 的普通树中,节点 A、B 和 C 互为兄弟节点,节点  D、E 和 F 也互为兄弟节点 孩子兄弟表示法,采用的是链式

(数据结构)树的Child表示法-爱代码爱编程

树的孩子表示法 此前介绍过用双亲表示法存储普通树,本篇文章将讲解另一种存储普通树的方法... 另一种方法是孩子表示法!!! 孩子表示法存储普通树采用的是:顺序表和链表的组合结构 其存储过程是:从树的根节点开始,使用顺序表依次存储树中各个节点,需要注意的是,与双亲表示法不同,孩子表示法会给各个节点配备一个链表,用于存储各节点的孩子节点位于顺序表中的位

(数据结构)二叉树中序遍历-爱代码爱编程

二叉树中序遍历 二叉树中序遍历的实现思想是: 访问当前节点的左子树访问根节点访问当前节点的右子树 图 1 二叉树 以上图 1 为例,中序遍历的过程如下: 访问该二叉树的根节点,找到 1遍历节点 1 的左子树,找到节点 2遍历节点 2 的左子树,找到节点 4由于节点 4 无左孩子,因此找到节点 4,并遍历节点 4 的右子树由于节点 4 无右子

(数据结构)二叉树-爱代码爱编程

什么是二叉树 简单地理解,满足以下两个条件的树就是二叉树: 本身是有序树树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2 如上图右侧结点 1 有三个分支(度为 3),故不满足二叉树的条件 二叉树的性质 二叉树具有以下几个性质: 二叉树中,第  层最多有  个结点如果二叉树的深度为 ,那么此二叉树最多有  个结点二叉树中,叶子结点数

(数据结构)树存储结构 —— 2022/3/29-爱代码爱编程

树存储结构 树结构概括树的结点子树和空树结点的度和层次有序树和无序树森林树的表示方法 树结构概括 树结构是一种非线性存储结构,存储的是具有一对多关系的数据元素的集合 如上图是使用树结构存储集合 {A,B,C,D,E,F,G,H,I,J,K,L,M} 的示意图 具体一对多关系表现在:数据 A 和数据 B、C、D 有关系;数据 B 和 A、

(数据结构)利用 C语言实现顺序队列及链队列-爱代码爱编程

顺序队列及链队列 顺序队列—— 头文件构造入队列的函数构造展示队列元素的函数构造出队列的函数—— 主函数对顺序队列的优化 —— 环状队列—— 头文件构造初始化队列的函数构造入队列的函数构造展示队列元素的函数构造出队列的函数—— 主函数链队列—— 头文件结构体声明队列节点构造创建链式队列的函数构造尾插法插入链队列元素的函数构造出列函数—— 主函数

(数据结构)广义表的存储结构-爱代码爱编程

广义表 广义表的优点广义表的原子和子表广义表的表头和表尾广义表的存储方式 广义表的优点 数组可以存储不可再分的数据元素,也可以存储数组(即 n 维数组) int arr_1[] = {1, 2, 3, 4, 5}; // 存储了整型数据的一维数组 int arr_2[][2] = {1, 2, 3, 4}; // 二行二列的

C语言实现稀疏矩阵的转置-爱代码爱编程

#include <stdio.h> #define number 10 // 结构体声明三元组节点 typedef struct { int i, j; int data; } triple; // 结构体声明稀疏矩阵节点 typedef struct { triple data[10]; int n,

(数据结构)C语言稀疏矩阵存储之十字链表 —— 2022/3/27-爱代码爱编程

十字链表 —— 头文件利用结构体声明元素节点利用结构体声明矩阵节点构造初始化十字链表矩阵的函数构造展示十字链表的函数—— 主函数 —— 头文件 #include <stdio.h> #include <stdlib.h> 利用结构体声明元素节点 // 元素节点 typedef struct OLNode{

C语言字符串的输入和输出 —— 2022/3/21-爱代码爱编程

字符串的输入和输出 字符串的输出字符串的输入 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串 二个字符串输出函数!!! 1:puts() 输出字符串并自动换行,该函数只能输出字符串 2:printf() 通过格式控制符 %s输出字符串,不能自动换行 #include <stdio.h&g

(数据结构)二叉树的链式存储结构-爱代码爱编程

二叉树的顺序存储的缺点 因为并不是每个二叉树都是完全二叉树,普通二叉树使用顺序表存储或多或少会存在空间浪费的现象 图 1 普通二叉树的转化 如上图 1,普通二叉树里只有二个元素,最好的存储方式当然是开辟相对应的空间,但是顺序存储结构却让我们不能这么做!也就是说我们此时必须花更多的空间去存储相对少的元素 二叉树的链式存储 先慢慢介绍一下链式存储

C语言字符数组和字符串 —— 2022/3/20-爱代码爱编程

字符数组和字符串 字符数组字符串结束标志字符串长度 字符数组 用来存放字符的数组称为字符数组 char str_1[10]; // 一维字符数组 char str_2[5][10]; // 二维字符数组 字符数组实际上是一系列字符的集合,也就是字符串(String) C语言规定,可以将字符串直接赋值给字符数组(

(数据结构)对图的顺序结构存储的补充-爱代码爱编程

图的顺序结构存储无向网和有向网 如下是一个有向网!!! 代码实现如下(包括无向网):  #include <stdio.h> #define MAX_NUM 20 // 顶点的最大个数 typedef enum{ DG, DN, UDG, UDN // 依次代表的值为 0,1,2,3 } GraphKind; // 枚举

(数据结构)图的顺序存储结构-爱代码爱编程

图的顺序存储结构 使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组) 不同类型的图,存储的方式略有不同,根据图有无权,可以将图划分为两大类:图和网         图:包括无向图和有向图         网:是指带权的图,包括无向网和有向网         存

(数据结构)生成树-爱代码爱编程

生成树 在连通图的基础上,本篇文章将介绍什么是生成树,以及什么是生成森林 先介绍生成树!!! 对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树 图 1 连通图及其对应的生成树 图 1 中,左侧是一张连通图,右侧是其对应的 2 种生成树 但是介绍到这里我想疑问还是很多的,比如说遍历的方法是什么!生成树的定义是什

(数据结构)连通图-爱代码爱编程

图存储结构分类之连通图 连通:图中从一个顶点到达另一顶点,若存在至少一条路径,则称这两个顶点是连通着的   图 1 顶点之间的连通状态示意图         图 1 中,虽然 V1 和 V3 没有直接关联,但从 V1 到 V3 存在两条路径  和 ,因此称 V1 和 V3 是连通的 连通图(无向图):任意两个顶点之间都能够连通 图 2