自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 自动点餐系统

printf("\t\t%-12s\t单价:%-8.2f\t剩余储量%-10d\n", p->name, p->price,p->quantity);printf("\t\t******************登录系统*****************\n");printf("\t\t---------------------菜单---------------------\n");printf("\n\t\t如果您是想添加热推菜品回答1,删除热推菜品回答2\n\t\t");

2023-06-18 18:25:51 154

原创 Java 基础知识

java中,System.out.println()方法会自动在输出内容后换行,因此输出的结果会单独占一行。当”+“ (前后任一)操作中出现字符串时,用”+“是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生一个新的字符串。//不等于s=s+1;打开系统的设置页面->高级系统设置->高级->环境变量->系统变量里面找到path->编辑。//flase,输出的不是0。//true,输出的不是1。//等于 s=(short)(s+1)cd 目录1\目录2\...... //进入多级目录。

2023-06-01 19:58:43 98

原创 每日刷题:[1,n]都是子串

给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false。,其返回值是指向第一个匹配到的子串的指针,如果没有匹配到则返回 NULL。此功能是将一个数num转换成二进制的形式存储,使用了&(位与)运算进行计算。在此程序中调用了一个函数:strstr(),包含在string.h库里面。输入:s = "0110", n = 3。输入:s = "0110", n = 4。1 <= n <= 10的9次方。

2023-05-11 23:02:19 131

原创 普里姆算法完整版

在 void MiniSpanTree_Prim(AMGraph G, VerTexType u)里,该句if (G.arcs[k][j] < closedeg[j].lowcost)是错误的 需要被替换成if (G.arcs[k][j] < closedeg[j].lowcost||G.arcs[k][j]>0&& closedeg[j].lowcost==0),原因是在 Prim 算法中,如果节点。来存储每个节点与当前最小生成树的距离和其对应的父节点,并将除起点外的其他节点初始化为。

2023-05-10 23:37:59 313

原创 最短路径问题

数组,将起点到自身的距离设为0。然后,我们通过遍历整个顶点集合来寻找当前未被访问的最近顶点,并将其标记已被访问。接着,我们更新所有与该顶点相邻的顶点的最短路径长度。最后,输出各个最短路径的长度。来存储从起点到各个顶点的最短路径长度,同时使用数组。在最开始的循环中,我们初始化。邻接矩阵来表示图,通过定义。来标记顶点是否已被访问过。数组来存储图的各个权值。函数中,我们使用数组。

2023-05-09 23:14:38 66

原创 二叉树及树的例题

则深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。已知一棵度为3的树(一个结点的度是指其子树的数目,树的度是指该树中所有结点的度的最大值)中有5个度为1的结点,4个度为2的结点,2个度为3的结点,那么,该树中的叶子结点数目为(B)。某森林F对应的二叉树为T,若T的先序遍历序列是a,b,d,c,e,g,f,中序遍历序列是b,d,a,e,g,c,f,则F中的树的棵数是( D)。而树T的分支个数总数为B:5*1+4*2+2*3=19。

2023-05-09 00:04:50 38

原创 最小生成树

其中,Prim算法是一种贪心算法,从选定的起始顶点开始,每次从距离该顶点最近的未选择顶点中选取距离最小的顶点加入到生成树中;Kruskal算法则是将所有的边按照权值从小到大排序,然后依次加入到生成树中,如果该边连接的两个节点已经在生成树中,则该边不加入生成树。最小生成树(Minimum Spanning Tree,MST)是连接无向带权连通图所有节点的一棵无向树,并且需要满足总权值最小,也就是权值之和最小。最小生成树解决的问题是在带权连通图中找出一个生成树,使得这棵树的所有边权重之和最小。

2023-05-07 23:19:20 43

原创 广度优先搜索

带优先级的广度优先搜索(A*算法):在广度优先搜索的基础上,引入启发函数(Heuristic Function),在扩展节点的时候优先选取启发式函数值更小的节点进行拓展,以此来减少搜索的时间和空间复杂度。双向广度优先搜索(Bidirectional BFS):在从初始节点开始的广度优先搜索过程中,同样从目标节点开始进行广度优先搜索。通过队列作为辅助数据结构,保证了每层中的节点按照从左到右的顺序依次加入队列,并先访问离起始节点近的节点,从而实现了广度优先搜索。从队列中取出下一个节点,并遍历该节点的相邻节点。

2023-05-05 23:46:38 54

原创 DFS练习题

在主函数依次从左到右,从上到下遍历,每当遇到1时,就从主函数里调用DFS函数,将多个连续相连的1全部改为0;DFS函数里,判断每一个点是否为1,不为1则返回,否则为1接着判断该点1的上下左右所有的点,依次递归,直到相连的1都变成0则退出DFS函数,然后在主函数的循环里接着寻找下一个为1的点,该点是一个新的岛屿;给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。输入:grid = [

2023-05-04 22:09:28 52

原创 邻接多重表,图的遍历

头插法与前面实现中的方法不同之处在于,对于一个弧头或弧尾结点,我们直接将新边插入链表的头部,而不需要考虑该节点是否已经有其他边。因此可以把插入新的弧头弧尾节点的代码删除掉。邻接多重表是一种图的存储方式,基本思想是将每条边表示成两个相反的弧,且每个弧含有其指向弧尾的下一个弧和指向弧头的下一个弧。邻接多虫表的存储表示。

2023-04-28 23:53:35 81

原创 邻接表与十字链表

如果是创建有向图 仅需 建立一条<i,j>的边即可(出度)不需要 建立一条<j,i>的边(入度)但用邻接表求出度容易,求入度难;用逆邻接表求入度容易,求出度难。因此采用十字链表(有向图)的方法会完美解决这个问题。其中,xy分别指向结点data在数组里的下标。用邻接表表示法创建无向图。包括表头结点表与边表。

2023-04-27 22:09:21 56

原创 邻接矩阵表示

对于一个顶点数为n的无向图,其邻接矩阵为一个n * n的方阵M,若i和j之间存在一条边,即从i到j有一条边或从j到i有一条边,则M[i][j]=1;否则M[i][j]=0。(2)读取每个节点及其相邻节点的信息,并根据节点编号在邻接矩阵中标记对应位置为1或者对应位置写入边的权值。对于无向图,需要对称地在邻接矩阵中标记另一条边,即如果(i, j)是一条边,则(j, i)也是一条边。(1)初始化邻接矩阵为全0,若无向图为带权图,则将对角线元素初始化为∞。为顶点V1和V2之间的边的权值,若为无向网,则还需要将。

2023-04-25 23:41:34 1178

原创 图的类型定义与存储类型

对于带权图,则将数组中的元素存储为边的权重值。邻接表:邻接表是通过链表的方式来表示图的连接关系,其中每个顶点都对应了一个链表,链表中存储了所有与该顶点相连的边的信息(如连接的另一个顶点、边的权重等)。二分图(Bipartite Graph):可以将所有顶点分成两个不相交的集合A和B,使得同一集合中的顶点之间没有边相连,不同集合中的顶点之间有边相连。有向图(Directed Graph):每条边都是一个有向边,即两个顶点之间的连线有方向,从一个顶点到另一个顶点的路径只能按照边的方向走。

2023-04-24 23:54:47 113

原创 C小知识点

第6优先级:大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=;第1优先级:各种括号,如()、[],->等、成员运算符 .;第14优先级:各种赋值运算符,如=、+=、-=、*=、/= 等;第3优先级:乘法运算符*、除法运算符/、求余运算符%;第2优先级:所有单目运算符,如++、–、!第7优先级:等于运算符==、不等于运算符!第4优先级:加法运算符+、减法运算符-;第5优先级:移位运算符<<、>>;第12优先级:逻辑或运算符||;第10优先级:按位或运算符|;第8优先级:按位与运算符&;

2023-04-24 00:10:57 37

原创 文件的使用

函数返回非零值时,表示文件指针已经到达了文件结尾。函数来测试文件指针是否已经到达文件结尾,从而确保不会读取到无效数据。函数只能检查是否已经到达文件结尾,而不能检查文件是否存在或已经打开。文件的操作一般分三步:1.打开文件;今天复刻了下文件知识以及一些新的文件和字符串操作函数的使用;类型的指针作为参数,可以是任何打开的文件或标准输入输出流。是否已经到达文件的末尾,以便在文件末尾时采取适当的操作。函数的原理:"如果读取操作已尝试读取超过文件末尾的值,该函数可以返回文件指针相对于起始位置的偏移量;

2023-04-22 00:14:09 79

原创 自助点餐系统基本框架

printf("\t\t%-12s\t单价:%-8.2f\t剩余储量%-10d\n", p->name, p->price,p->quantity);printf("\t\t******************登录系统*****************\n");printf("\t\t已加入%s\t%.2f元\n", order[i], result->price);printf("\t\t---------------------菜单---------------------\n");

2023-04-21 00:06:42 315

原创 自助点餐系统

用于修改控制台背景颜色,包含在inlucde<windows.h>删除结点,使用二叉搜索树存储!

2023-04-19 23:21:24 1306

原创 自助点餐系统

查看一天销售额统计可以将每次消费的金额记录下来,统计“一天”所销售额。这是一个插入结点的函数,使用“搜索二叉树”存储每一个“菜品”还需要做一个销售排名,统计每一个菜单的销售数量排名。

2023-04-18 23:46:03 152

原创 自动点餐系统

添加的菜品需要下次运行时仍然存在,需将菜品存入文件,方便存取。系统初始化、两个用户登录模式 10。错误点:每次读入文件总会多出一个结点,结点内的值为随机数。店家对菜进行热推、结账功能 20。店家对菜单进行存储功能 10。界面显示、菜单交互 10。就餐者查看菜单功能 10。就餐者进行结账功能 10。就餐者点菜的功能 10。菜的销售排行榜 10。店家一天销售额的统计 10。对于管理员应用有以下权限。对于顾客应用有以下权限。

2023-04-17 23:35:58 108

原创 图的基本知识

邻接矩阵:用一个二维数组G[V][V]G[V][V]来表示有|V|∣V∣个顶点的图。如果(i,j)(i,j)是一条边,则G[i][j]=1G[i][j]=1。否则,G[i][j]=0G[i][j]=0(对于无向图,还需要设置G[j][i]G[j][i]的值)。如果图是带权的,则可以将G[i][j]G[i][j]赋为边的权重。其中每个adjlist[i]adjlist[i]都是一个单向链表(或者是数组),存储从第ii个节点出发的所有边(对于无向图,需要把每条边都存储两次)。

2023-04-16 23:22:28 46

原创 滑动窗口与KMP

滑动窗口的基本思想是维护一个窗口,窗口通常是一个连续的区间或子数组,可以向右或向左滑动。它核心的思路是利用已知信息消除重复比较,即通过预处理出模式串的信息(next数组),来优化在主串中匹配的过程。KMP算法的时间复杂度为O(m+n),其中m和n分别表示模式串和文本串的长度。滑动窗口算法主要用于求解最值问题或者子序列问题,例如求一个字符串中长度为k的最大/最小字串,或者判断一个字符串是否包含另一个字符串。它的思想是使用一个大小可变的窗口,左右两端向前滑动,维护窗口内的状态来求解问题。

2023-04-16 00:09:41 224

原创 哈夫曼树的算法

哈夫曼树(Huffman Tree):又称最优树,是一种带权路径长度最短的树。在构建哈夫曼树的过程中,首先将nn个权值看作叶子节点,然后将这些节点按照权值从小到大排序。接着,每次从排序后的节点序列中选取权值最小的两个节点作为左右子节点构建一个新的二叉树,同时将这两个节点从序列中删除,将构造出的新节点插入到序列中。重复这个过程,直到节点序列中只剩下一个节点为止,就得到了哈夫曼树。构造哈夫曼树算法的实现分为两大部分。根据哈夫曼树求哈夫曼编码代码。

2023-04-14 23:39:32 317

原创 归并排序 希尔排序

缩小一半直到为 1。在每个增量值下,对于未排序的元素,在其前面已排序元素内找到合适的位置插入,并保持之前元素的相对位置关系不变。这个过程类似于插入排序,只是多了一个增量序列的设置。循环结束后,即可得到排好序的数组。在合并两个子数组时,需要从两个子数组中依次取出最小的元素进行比较,将较小的元素按照顺序存放到一个新的辅助数组中。作为参数,对数组进行希尔排序。在排序过程中,首先定义一个增量。归并排序的关键代码主要包括两部分:拆分数组和合并数组。,初始值为数组长度的一半,每次循环将。函数接受一个整数数组。

2023-04-13 22:26:35 25

原创 树和森林算法

孩子表示法存储普通树采用的是"顺序表+链表"的组合结构,其存储过程是:从树的根节点开始,使用顺序表依次存储树中各个节点。需要注意,与双亲表示法不同的是,孩子表示法会给各个节点配备链表指针,来存储节点的所有子节点。其余的节点,只需要存储其父节点对应的数组下标即可。双亲-孩子链表是一种将双亲表示法和孩子表示法结合起来的存储方式。每个节点既存储与它直接相关的双亲节点信息,又存储它的所有子节点信息。他们的存储一样,不同解读有不同的树,可先将树按存储来转换。二叉树的遍历分为:先序,中序,后序,层次。

2023-04-12 23:07:26 39

原创 线索二叉树

在二叉树的线索链表上添加一个头结点,并令其lchild域的指针指向二叉树的根节点,令其rchild域的指针指向中序遍历时访问的最后一个结点;同时,令二叉树中序序列中第一个结点的lchild域指针和最后一个结点的rchild域指针均指向头结点。在中序遍历线索化算法中,我们首先需要建立头结点,并将其左孩子指向根节点,右孩子指向后继节点。如果前驱存在且未有右孩子,则将前驱的右孩子指针指向当前节点,并将前驱的右标记设置为线索。对于当前访问到的节点T,首先递归处理它的左子树。递归处理节点T的右子树。

2023-04-11 22:51:38 55

原创 图的定义与基本术语

2、链式存储结构:每个逻辑元素用一个内存结点存储,每个结点是单独分配的,通过指针域将所有结点连接起来实现数据之间的逻辑关系。图(Graph)是由节点(Node)和边(Edge)组成的一种数据结构,用于表示对象之间的关系。4、哈希存储结构:根据元素的关键字通过哈希函数直接计算出一个值,并将这个值作为该元素的存储地址。子图(Subgraph):一个图的子集,包含该图中的部分节点和边。度(Degree):节点相邻边的个数,度为0的节点称为孤立节点。边(Edge):两个节点之间的连接线,用来表示对象之间的关系。

2023-04-10 23:20:10 164

原创 二叉树的算法

根据遍历序列确定二叉树:如果已知二叉树的先序序列与中序序列或者中序序列与后序序列均能唯一的确定一个二叉树,但是如果已知二叉树的线序序列与后续序列则不能推出唯一的二叉树。与判断两个二叉树是否相同大同小异。按照先序遍历的顺序建立二叉链表。

2023-04-09 22:25:37 27

原创 历遍二叉树和线段树

线索化指的是在二叉树中添加一个指向前驱节点和后继节点的指针,从而可以在不需要使用递归或栈的情况下完成遍历操作。常见的二叉树遍历方式有三种:前序遍历、中序遍历和后序遍历。前序线索二叉树:在前序遍历的基础上,将每个叶子节点的左右孩子指针指向该节点在前序遍历中的前驱节点和后继节点。后序线索二叉树:在后序遍历的基础上,将每个叶子节点的左右孩子指针指向该节点在后序遍历中的前驱节点和后继节点。中序线索二叉树:在中序遍历的基础上,将每个节点的左右孩子指针指向该节点在中序遍历中的前驱节点和后继节点。

2023-04-09 00:56:54 69 1

原创 数组的压缩 广义表

由于上三角矩阵只有主对角线及其以上的元素非零,因此在第 j 列中,第 i 行以下的所有元素都为零,因此该元素在第 j 列中的下标为 i-j+k-1。广义表的定义形式化地表达为:对于任意一个元素 x 和广义表 L,L 要么是空表,要么是一个包含 x 的广义表,或者是一个包含若干子表的广义表。其中,n 是矩阵的大小,k 是数组的下标,i 和 j 是矩阵元素的行列下标。其中,Loc(a) 是数组首地址,d1, d2, ..., dn 分别是每一维的基本偏移量,size 是每个元素的大小(即数据类型的字节数)。

2023-04-07 22:52:59 82 1

原创 栈的算术表达式,串的BF与BMK算法

使用栈时,初始化一般top=-1 ,然后每次push值都s-data[++s->top]=x//data为数组,x为输入的树 ,判断为空就是top=-1;(s->top==maxsize-1顺序栈或者s->top-s->base==maxsize链栈);串的KMP算法: 只改变字串j的位置,i的值不改变(持续递增),如果没有找到则返回-1。其中next数组: 实际上返回到KMP的j值为再模式串中的k前找最长公共子串的长度+1;表达式求值的算法:我们可以使用两个栈(一个用于存储数字,另一个用于存储运算符。

2023-04-06 23:29:21 120

原创 树及二叉树

满二叉树:其中除了叶子节点,每个节点都有两个子节点,每层节点数都达到了最大值。满二叉树具有很好的性质,例如根节点到叶子节点的路径长度相同,并且具有完美平衡性,但由于要求每个节点都有两个子节点,所以在实际使用中比较少见。父节点:节点包含指向其子节点的指针,所以每个节点都有一个父节点,除了根节点。子节点:每个节点可以有零个或多个子节点,子节点指向其父节点。叶子节点:在一棵树中,没有子节点的节点被称为叶子节点。根节点:树中最顶层的节点称为根节点,它没有父节点。兄弟节点:相同父节点之间的子节点称为兄弟节点。

2023-04-05 23:49:01 93 1

空空如也

空空如也

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

TA关注的人

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