自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 “抽象”《大话数据结构》第九章——简单排序

冒泡排序虚假的冒泡排序法#include <stdio.h>#define MAXSIZE 10typedef struct{ int r[MAXSIZE + 1]; int length;}SQList;//************交换函数*************//void swap(SQList *L, int i, int j){ int temp; temp = L->r[i]; L->r[i] = L->r[j]; L->r[j

2020-06-16 09:55:42 133

原创 “抽象”《大话数据结构》第七章——关键路径

关键路径介绍AOE网:在一个表示工程的带权有向图中,用顶点表示事件(比如:发动机造好啦),用有向边表示活动(比如:我正在造发动机),用边上的权值表示活动的持续时间(比如:造发动机需要3天),这种有向图的边表示的活动的往,就是AOE网。这个网有一个源点和一个汇点,源点到汇点的最长路径称作关键路径,关键路径上的活动称为关键活动。关键路径算法原理首先需要对拓扑排序进行改进,用于求出etv[]数组。int *etv;int top2;int *stack2;int TopologicalSortlo

2020-06-07 19:27:58 208

原创 “抽象”《大话数据结构》第七章——拓扑排序

拓扑排序介绍拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列:V1,V2,V3,…,Vn,满足若从顶点Vi到Vj有一条路径,则在顶点序列中顶点Vi比在顶点Vj之前。我们称这样的顶点序列为一个拓扑序列。**拓扑排序:**就是对一个有向图构造拓扑序列的过程。拓扑排序算法算法的实现是基于邻接表的存储结构。代码思想:1 定义一个栈(stack)存储没有入度的顶点序号,定义top指向栈顶,定义count记录输出的顶点个数,以便判断是否有环存在。2 初始化stack,把所有入度为0

2020-06-07 13:46:39 195

原创 “抽象”《大话数据结构》第七章——最短路径

最短路径对于网图:最短路径是指两顶点之间经过的边上权值之和最小的路径对于非网图:最短路径是指两顶点之间边数最小的路径,因为边的权值都为1迪杰斯特拉算法算法思想:1 首先定义两个数组Pathmatirx[i] , ShortPathTable[k]。Pathmatirx数组它的序号 i 代表顶点序号,而对应的元素则是最短路径上,它的前继顶点的序号ShortPathTable数组它的序号 k 依然是代表顶点序号,而元素则代表当前所找到的最短路径的权值和。2 定义一个临时数组final[k],它

2020-06-06 17:57:34 239

原创 “抽象”《大话数据结构》第七章——最小生成树

最小生成树我们把构造连通网的最小代价生成树称为最小生成树。普里姆算法和克鲁斯卡尔算法是生成最小生成树两种经典算法。普里姆算法普里姆算法是基于邻接矩阵存储结构的,1 需要两个重要的数组adjvex[],lowcost[]。adjvex[k]这个数组中k代表下一个顶点序号,adjvex[k]这个元素则是上一个顶点的序号,二者的边则是序号为adjvex[k]这个顶点权值最小的那条边。lowcost[]则是不断并入新的结点的相关边的权值,决定下一步走哪条边权值最小。2 初始化这两个数组,lowcos

2020-06-04 14:20:18 170

原创 “抽象”《大话数据结构》第7章——图的遍历

图的遍历的定义从图的某一个顶点出发,访问图中其余全部顶点,且使每一个顶点仅被访问一次,这就是图的遍历。深度优先遍历邻接矩阵存储方式的深度优先遍历1 先对访问过程中标记用的数组进行初始化操作2 通过循环访问标记用的数组,判断顶点是否被访问3 没被访问进行递归调用代码如下:typedef int Boolean;Boolean visited[maxvex];void DFS(GRPH G, int i){ int j; visited[i] = TURE; printf("%c",

2020-06-03 16:22:52 227

原创 “抽象”《大话数据结构》第七章——图(至存储结构)

图的定义图是由 顶点的有穷非空集合 和 顶点之间边的集合 组成。通常表示为:G(V,E),其中G代表一个图,V代表顶点,E代表边缘。顶点的有穷限制了边的有穷性,但是在顶点非空的情况下,边可以是空集。无向图有向图由无向边构成,无向边用无序偶对(Vi , Vj)表示由有向边构成,有向边用有序偶对<Vi , Vj>表示无向边没有方向有向边有方向,由弧尾指向弧头––无向完全图有向完全图任意两个顶点之间都存在边任意两个顶点之间都存在方向相反

2020-06-02 13:43:15 439

原创 “抽象”《大话数据结构》第六章——二叉树

二叉树的性质二叉树的性质1根据满二叉树的特点可知,普通二叉树每层的节点数是不会比满二叉树还多的,由于满二叉树的前后层数上的结点数目是按照比例2递增的,a1 = 1,a2 = 2,a3 = 4,a4 = 8.。。。所以ai = 2^( i - 1)在二叉树的第 i 层上至多有2^( i - 1个结点。二叉树的性质2讨论二叉树总共多少结点,以满二叉树位例,假设满二叉树的深度为4,则总结点数是比例为2的等比数列求和a1∗(1−qi−1)/(1−q)a1*(1 - q^{i - 1})/(1-q)a

2020-05-25 12:53:30 321

原创 “抽象”《大话数据结构》第六章——树(概念部分)

树的定义树也是有限结点(n个)的集合,有如下特点:1 n = 0时,树成为空树2 n > 1时,树可以分为更多不相交的子树3 一棵树的根是唯一的4 子树的个数没有限制,但是必须各个子树互不相交我们也给树的结点分了类别:首先我们需要知道,结点拥有的子树的数目,称为结点的度。这样就可以按照度来进行分类了。1 叶子,度为零的结点称为叶子,在树的最末端。2 分支结点,度不为零的结点,称为分支结点,又称内部结点。度还有一个作用就是:在一棵树里面,某一结点度的值最大,那么这个度也就代表了整棵树

2020-05-19 13:15:08 269

原创 “抽象”《大话数据结构》第五章——串

串的定义串是由零个或者多个字符组成的有限序列,又名叫做字符串。子串:串中任意个数的连续字符组成的子序列称为该串的子串。空串:零个字符串的串,长度为零。空格串:由空格组成,有长度。串的比较相等:必须是他们串的长度以及它们各个对应位置的字符都相等。不相等时:1 字符串的长度不相同。2 有s = “a1 a2 a3…an”,t = “b1 b2 … bm”,存在某个k < = min(n m),使得ai = bi (i = 1,2,3…k-1), ak < bk或者ak > bk。

2020-05-15 17:41:30 196

原创 “抽象”《大话数据结构》第四章——队

队的定义队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列的抽象数据类型数据部分:线性表的数据元素同类型,相邻元素具有前驱和后驱关系操作部分:1 建立空队列2 释放队列的存储空间3 从队尾插入新的元素4 从队头删除元素队列的顺序存储结构循环队列循环队列其实就是队列的顺序存储结构,即元素在存储空间上是连续的。定义front指针指向队头,rear指针指向队尾元素的的后一个空闲元素位置。判断队列是否为空:rear == front判断队列是否队满:为了区别于队空

2020-05-10 20:57:05 146

原创 用单链表抽象数据类型实现电话薄

定义结点类型#include <stdio.h>#include <malloc.h>#include <conio.h>#include <stdlib.h>#include <string.h>#define OK 1#define ERROR 0typedef int Status;typedef int Phone;/*****************定义结点内容******************

2020-05-09 13:10:53 490

原创 “抽象”《大话数据结构》第四章——栈

栈的定义首先栈是一种线性表,他比较特殊,只能在表尾进行插入和删除操作。栈的抽象数据类型数据类型:栈的每一个元素依然是结构体,有数据域,有栈顶指针。对应操作:1 初始化操作,建立一个空栈。2 释放栈的分配空间3 在栈顶插入新的元素4 删除掉栈顶的元素5 返回栈的元素个数栈的顺序存储结构根据栈的抽象数据类型,现在一一实现它。先是数据类型:typedefint SElemTy...

2020-05-08 11:49:02 164

原创 “抽象”《大话数据结构》第三章(链式存储结构)

线性表链式存储结构定义该链表的每个结点是一个结构体,结构体内部有两个成员,一个成员是整形变量,称作数据域。另一个成员是结构体指针变量,存放下一个节点的首地址。下面要引出一些概念:头结点:顾名思义,头结点是整个单链表的最前面的结点,它有点儿特殊,它的数据域不用来存储数据,而是存储链表长度之类的属性信息,然后呢,它的指针域存储则是第一个数据结点的地址。头指针:就是上面说的,头结点的指针域。...

2020-04-27 22:41:44 122

原创 “抽象”《大话数据结构》第三章(第一部分)

什么是线性表?零个或多个数据元素的有限序列。具备如下特征:有头,有尾,有限。类型相同。除去开头,每个元素都有前驱。除去结尾,每个元素都有后继。前面讲过的抽象数据类型,即有数据类型定义,也包含数据相关的操作。线性表的抽象数据类型线性表的定义+查找线性表元素+获取线性表的长度+往线性表中插入新的值+往线性表中删除值+清空线性表。InitList( *L );LocateElem(L,e)...

2020-04-26 21:24:58 84

原创 “抽象”《大话数据结构》第二章

到目前为止,对于前两章节,先是说明白什么是数据结构,第二章就说什么是算法,很有意思,i了i了。什么是算法?算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法的特性VS算法设计的要求|算法的特性算法设计的要求输入输出:算法可以有0个输入或者多个输入,但却一定要有至少一个输出。正确性:算法至少应该具有输入输出和加工处理...

2020-04-24 14:18:55 111

原创 “抽象”《大话数据结构》第一章

程序 = 数据结构 + 算法在我刚刚开始程序员之路的今年,知晓了上面的公式。现在开始接触数据结构!GO!!!什么是数据?数据在被定义的时候是不能非常具体的。例如:这是图片,图片就是一种数据。而如果说这是一张人物图,那这张图片就被定义为数据元素,所有具体的每张图片构成“图片”这一数据。所以可以看出数据是一类集合,数据元素就是集...

2020-04-23 14:02:35 121

原创 ADS1256实现轮询

文章描述了使用STM32F407通过SPI通信实现了ADS1256的轮询功能。解决了使用过程中,各个通道之间数据读取串码的问题。SPI通信可以使用硬件SPI通信,也可以使用I/O模拟SPI通信。区别在于硬件SPI通信的过程中不会被中断打断,具有较高的稳定性,但是代码移植性不高。在实现软件SPI通信成功后,硬件SPI也是非常简单的。阅读数据手册数据手册这里只列举关键部分的内容。读懂一些必须的...

2020-04-22 22:29:31 4545 1

PHONENUMBER.c

用C写的单链表电话本

2020-05-09

空空如也

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

TA关注的人

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