数据结构与算法
文章平均质量分 92
fly_ship
这个作者很懒,什么都没留下…
展开
-
数据结构课程设计——十佳优秀青年
#include<iostream>#include<cstring>#include<iomanip>using namespace std;struct student{ char name[20]; //姓名的拼音 int num; //学号 int number; //票数 int Class; //班级 char major[30].原创 2020-12-28 18:36:12 · 1633 阅读 · 0 评论 -
数据结构-12 图(应用)
图的遍历遍历是指:找每个顶点的邻接点图中存在回路,图的任意顶点都可能与其他顶点相同,在访问完某个顶点后可能会沿着某些边又 回到了曾经访问过的结点解决思路:设置辅助数组visited[n],用来标记每个被访问过的顶点初始状态visited[i] = 0;顶点被访问,改visited[i] = 1,防止被多次访问深度优先搜索DFSvoid DFS(AMGraph G, int v){ //图G为邻接矩阵v所在的行 cout<<v; visited[v] = true; //原创 2020-12-09 16:41:58 · 289 阅读 · 1 评论 -
数据结构-11 图(存储)
图:G=(V,E)V:顶点 要求有穷非空 E:边 要求有穷完全图;任意两个电都有一条边相连 无向完全图:n*(n-1)/2条边有向完全图:n*(n-1)条边 网:边带权的图邻接:有边相连的两个顶点的关系顶点度:与该顶点关联的边的度数当前的有向图中只有一个顶点的入度为0,其余顶点的入度均为1,此时是啥形状?有向树连通图:若对图G任何两个顶点都存在从v到u的路径,则称G是连通图 连通分量:无向图G的极大连通子图称为G的连通分量 ...原创 2020-12-02 08:49:59 · 184 阅读 · 0 评论 -
数据结构-10 哈夫曼树
哈夫曼树 路径:从一个结点到另一个结点之间的分支构成这两个结点之间路径树的路径长度:从Root到每一个结点的路径长度之和结点数码相同的二叉树中,完全二叉树是路径长度最短的二叉树(路径长度最短的二叉树不一定是完全二叉树)权:给结点赋一个具有某种含义的值结点的带权路径长度:Root到该结点之间的路径长度 * 权值WPL树的带权路径长度:树种所有Leaf结点的带权路径长度之和 哈夫曼树:最优树:WPL最短的树 具有相同带权结点的哈夫曼树不唯一//贪心算法? 构造森林原创 2020-11-29 11:47:07 · 2229 阅读 · 0 评论 -
数据结构-9 树
树是n(n>=0)个结点的有限集,n=0时空树 基本术语建议看书重点学习二叉树(因为菜啊) 二叉树:要么是空集n=0,!!注意!!要么由一个根结点和两棵互不相交的分别称作左右子树的二叉树组成(递归)规定(背下来就好,我也不知道为啥,但是好像有点道理):二叉树不是不是不是不是不是树的特殊情况,他们是两个概念 二叉树性质 5个:first:第i层上至多由2^(i-1)个结点(i>=1)//最少有1个结点,没有不就没了吗 second:深度为k的二叉树至多有2^(k) - 1个结点原创 2020-11-25 19:04:21 · 784 阅读 · 0 评论 -
数据结构-8 数组矩阵和广义表
数组:具有相同类型的数据元素的集合 一维数组不说了,二维数组——套娃数组[行][列]体会一下 typedef int arra1[n]typedef array1 array2[m]数组特点:结构固定——维度和维界不变,没有那些乱七八糟的操作 一般采取顺序存储结构来表示数组感觉还是比较简单的假设有一个二维数组A[m][n]按行优先顺序存储,A[0][0]存放位置在644(10),A[2][2]存放在位置676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?//原创 2020-11-14 21:19:45 · 159 阅读 · 0 评论 -
数据结构-7 串
空串:啥都没有(所有空串相等) 空格串:若干空格组成的串真子串:不包含自己的所有子串 串相等:长度相等,且各个对应位置上的字符都相同 串可以采用和线性表相同的存储结构 顺序存储(用的多)#define MAXLEN 255 typedef struct{ char ch[MAXLEN +1]; //[0]——[255],对于有些算法这样会简单一点 int length; //串的当前长度 }SString; 块链(一个结点中放多个字符,以提高存储密度)#define CH原创 2020-10-28 23:35:21 · 1013 阅读 · 1 评论 -
数据结构与算法-6 队列
队列只允许再一端进行插入,在另一端删除队尾:允许插入队头:允许删除特点:先进先出 FIFO队空条件: Q.rear == Q.front队满条件:(Q.rear +1) % MaxSize == Q.front队列元素个数:(rear + Maxsize - front)% Maxsizetypedef struct{ ElemType data[MaxSize]; //用静态数组存放队列元素 int front, rear; //队头,队尾指针 }SqQueue;void I原创 2020-10-11 11:12:02 · 79 阅读 · 0 评论 -
数据结构与算法-5 栈
栈只允许在一端进行插入或删除的线性表栈顶:允许插入的一端栈低:不允许特点:后进先出 Last In First Out初始化void InitStack(SqStack &S){ S.top = -1 //初始化栈顶指针,0的位置还没有数据 }入栈bool Push(SqStack &5, ElemType x){ if(S.top == MaxSize-1) return false; //栈满,报错 // S.top = S.top + 1; /原创 2020-10-11 10:13:27 · 83 阅读 · 0 评论 -
数据结构与算法-4
单链表定义单链表结点类型struct LNode{ ElemType data; //数据域 struct LNode * next //指针指向下一个节点 };增加一个新结点:在内存中申请一个结点所需空间,并用指针p指向这个结点 struct LNode * p = (struct *) malloc (sizeof(struct LNode));ps:struct写的很麻烦,所以可以用typedef,typedf <数据类型><小名>t原创 2020-11-23 18:57:20 · 259 阅读 · 0 评论 -
数据结构与算法-3
顺序表一级目录一级目录一级目录逻辑上相邻的数据元素物理上也相邻&:引用符号静态分配maxsize一旦确定就不可更改(存储空间是静态的) //缺点哦ps:如果不进行初始化的话,内存中可能会由遗留的“脏数据”#define MaxSize 10//typedef struct{int data[MaxSize];int length;}SqList;动态分配#define InitSize 10typedef struct{ ElemType *data int Max原创 2020-11-23 18:57:44 · 184 阅读 · 0 评论 -
数据结构与算法-1
基本概念与术语数据元素:组成数据的基本单位数据>数据元素>数据项数据对象:性质相同的数据元素的集合,数据的子集数据结构:数据元素之间相互关系,包括以下三点1.数据元素之间的逻辑关系;2.数据元素及其关系在计算机内存中的表示,称为数据的物理结构或存储结构;3.数据的运算和实现,及对数据元素是假的操作以及这些操作在相应存储结构上的实现。逻辑结构的划分:线性结构,只有一个开始和一个终端节点,并且所有结点最多只有一个直接前趋和一个直接后继(ex:线性表、栈、队列、串)非线性结构,一个原创 2020-11-23 18:58:25 · 104 阅读 · 0 评论 -
数据结构与算法-2
算法和算法分析算法的定义算法的时间量度时间复杂度分析例题算法的空间量度算法的定义解决问题的方法和步骤(有穷性、确定性、可行性、输入、输出);程序 = 数据结构 + 算法。ps:健壮性,指处理出错的方法不应是中断程序的执行,而是输出一个代表出错的值。算法的时间量度一般采取事前分析的方法:算法运行时间 = 一个简单操作所需的时间 * 简单操作的次数 ;算法运行时间 = ∑ 每条语句执行的次数 (又称为语句频度)* 该语句指向一次所需的时间;每条语句执行一次need的时间一般随机器而异,与算法无原创 2020-10-05 16:44:24 · 253 阅读 · 0 评论