自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 01链表操作

【代码】01链表操作。

2025-01-02 19:58:16 226

原创 01顺序表的基本操作

【代码】01顺序表的基本操作。

2025-01-02 19:42:58 233

原创 第1关:实验16-选择排序(必做)

第i=1,..,n−1趟排序从当前无序区R[i−1,n−1]中选出最小的元素R[k],并将它与无序区的第1个记录R[i−1]交换,则R[0,i−1]变为元素个数增加1的新有序区,R[i,n−1]变为元素个数减少1的新无序区;选择排序是一种简单直观的排序算法,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。初始状态:无序序列为R[0,n−1],长度n,有序区为空;本关任务:实现选择排序算法,并将乱序数列变成升序。

2024-12-27 11:52:37 266

原创 第2关:实验16-快速排序(必做)

比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。在partition_array中,实现数组分区:选定一个基准,左边比基准小,右边比基准大,返回基准所处位置。递归recursive:把小于基准值元素的子数列和大于基准值元素的子数列分别递归排序。平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。分区partition操作:比基准值小的元素放在左边,比基准值大的元素放在右边;本关任务:实现快速排序算法,并将乱序数列变成升序。

2024-12-27 11:52:06 160

原创 第2关:实验15-合并排序(必做)

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,是采用分治法Divide and Conquer的一个非常典型的应用。治Conquer:将分的阶段得到的各答案合并在一起。平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。在merge_sort中,实现归并排序:自上而下的递归方法。本关任务:实现归并排序算法,并将乱序数列变成升序。把长度为n的输入序列分成两个长度为n/2的子序列;将两个排序好的子序列合并成一个最终的排序序列。开始你的任务吧,祝你成功!

2024-12-27 11:51:02 212

原创 第1关:实验15-插入排序(必做)

插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;在sort_array中,实现插入排序算法,完成指定输出。如果已排序元素大于新元素,将已排序元素移到下一位置;本关任务:实现插入排序算法,并将乱序数列变成升序。取下一个元素,在已经排序的元素序列中从后向前扫描;为了完成本关任务,你需要掌握:1.插入排序算法。

2024-12-27 11:50:20 389

原创 第1关:实现散列查找

假设有 8 个关键码: 7 , 15 , 23 , 31 , 12 , 14 , 10 , 17 ,采用散列函数hash(key)=key%7,其存储结构图如图 1 所示,它由 7 个独立链表组成,散列值相同的关键码在同一个链表里,独立链表的头结点组成散列表,一共 7 行,编号 0 , 1 , …在散列表中,如果表项的key字段等于 0 (假设有效的关键码值不等于 0 ),则表示该行是一条空链表,例如图 1 中编号为 4 和编号为 6 的行。//散列表的长度,一般取(小于等于数据个数的最大)质数。

2024-12-27 11:49:39 799

原创 第1关:二叉排序树的创建

二叉排序树:即一个二叉树,它的每一个结点的左孩子的data值比当前结点的data值小,而右孩子结点的data值比当前结点的data值大。依次将后面的无序序列依次插入二叉排序树,若比根节点值小,则递归插入左子树,否则递归插入右子树。平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。为了完成本关任务,你需要掌握:1.二叉排序树定义,2.如何创建一棵二叉排序树。创建一个根节点,将无序序列的第一个元素放入根节点;本关任务:输入一个无序序列,创建一棵二叉排序树。

2024-12-22 16:20:06 336

原创 第2关:二叉排序树应用

中序遍历inorder traversal是指按照先左节点,再根节点,最后右节点的次序访问二叉树中所有的节点,使得每个节点被访问且仅被访问一次。平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。例:图2表示一个二叉树,中序遍历的顺序如节点上面数字所示,结果为CBDAFE。本关任务:判断一棵树是否为二叉排序树,中序遍历二叉树,验证中序遍历结果。二叉排序树的中序遍历是有序序列,程序输出中序遍历结果。为了完成本关任务,你需要掌握:1.二叉树中序遍历。开始你的任务吧,祝你成功!

2024-12-22 16:12:51 171

原创 第1关:基于邻接矩阵完成拓扑排序

假设用数组Order存储排好序的顶点序列, Order[i]是排第i位的顶点,则一个拓扑排序满足:对任一个有向边e=(u,v),如果u存于order[i], v存于order[j], 则i<j,也就是u必须存储在v的前面。根据提示,在右侧编辑器补充代码,实现拓扑排序int TopSort(int Adj[][N], int order[]){ 其中Adj是邻接矩阵,将顶点序号填写在数组order中。第3步,在图中去掉点v,以及点v的出边,回到第2步对剩余的图处理, 直到i>=总顶点数,完成所有顶点排序。

2024-12-08 22:58:15 144

原创 第2关:基于邻接表完成拓扑排序

根据提示,在右侧编辑器补充代码,实现拓扑排序int TopSort(int n, LinkList* InAdjTable[], LinkList* OutAdjTable[], int order[]), 其中邻接表应用以前的单链表技术。邻接表给每个顶点建立一个链表,链表元素是该点的所有出边或者所有入边(只记录了每边的另外一个端点),构成出边邻接表或入边邻接表。第3步,在图中去掉点v,以及点v的出边,对剩余的图回到第2步处理, 直到i>=总结点数,完成所有顶点排序。开始你的任务吧,祝你成功!

2024-12-08 22:57:18 180

原创 第1关:Prim算法

如果e并不大,可以用邻接矩阵的稀疏表示方法,只表示有边的信息,其实也就是前面学过“三元组”法:(端点1,端点2,权值), 上图可以用一个边表表示-(0,1,6),(0,2,2),(1,2,3),....一共7个边。初始时A={0},故对B中所有的i, dis[i]=(Adj[i][0], 0)第四步:由于A中新增加u点, 故B中每个点i到A的最短边可能会是(i,u),需要检查更新, if (dis[i].R< Adj[i][u]) {dis[i].R=Adj[i][u];一般情况下,图G的生成树并不唯一。

2024-12-08 22:55:55 517

原创 第2关:求图(邻接表存储)最短路径的狄克斯特拉

不论图的存储结构为邻接矩阵还是邻接表,狄克斯特拉算法思想是一致的,只是求图的最短路径过程中具体操作不同,例如:用邻接矩阵存储图时,可以直接读取边的权值,用邻接表存储图时,需要定义一个函数读取边的权值。下表给出了上述有向网G中从源点0到其余各顶点的最短路径的求解过程。从0到6最短路径长度为:16 0→1→4→6。从0到5最短路径长度为:9 0→1→2→5。从0到4最短路径长度为:10 0→1→4。从0到2最短路径长度为:5 0→1→2。从0到1最短路径长度为:4 0→1。

2024-12-05 20:02:49 517

原创 第1关:求图(邻接矩阵存储)最短路径的狄克斯特拉算法

void DispAllPath(MGraph &g,int dist[],int path[],int S[],int v) //输出从顶点v出发的所有最短路径。cout<<"从"<<g.vexs [v]<<"到"<<g.vexs[i]<<"最短路径长度为:"<<dist[i]<<"\t";//printf("从%s到%s最短路径长度为:%s\t路径:",g.vexs [v],g.vexs[i],dist[i]);path[4]=5,path[5]=2,path[2]=1,path[1]=0(源点),

2024-12-05 20:01:55 378

原创 第3关:到目标结点需要多少步

前两关我们已经练习了分别通过DFS和BFS遍历所有的图结点,所以这是一种穷举式的查找方法。在遍历过程中如果记录到达每个结点的步数,则我们可以了解一下两种查找方法的时间性能特点。根据提示,在右侧编辑器补充代码,输出两种方法找到目标结点的步数。本关任务:编写一个计算从起点找到目标点的过程需要多少步。具体方法是两种方法在输出结点的时候,同时计数。开始你的任务吧,祝你成功!

2024-12-01 02:19:20 241

原创 第2关:宽度优先遍历图结点

第一步,定义一个队列,将起点start入队。根据提示,在右侧编辑器补充代码,先填好邻接矩阵,再设计宽度度优先算法。队列的代码已经准备好,可以直接用。第二步,从队列中取出一个点p访问(打印),然后将所有p的邻居入队。因为队列具有先进先出的特点,跟栈相反,离start更近的点将优先访问, 从而看起来是宽度优先。平台会对你编写的代码进行测试, 输入一个start, 输出字符打印序列。为了完成本关任务,你需要掌握如何设计图的宽度度优先遍历算法。本关任务:编写一个能用宽度优先方法遍历下图各结点的程序。

2024-12-01 02:18:37 162

原创 第1关:深度优先遍历图结点

因为栈具有后进先出的特点,可知下一步将访问新入栈的点, 而栈里的旧的点则落到最后访问。换一种思路,假设start有k个邻居, 那么如果把这k个点分别作为起点,递归完成对图的遍历,也实现了对整个图的遍历。根据提示,在右侧编辑器补充代码,先填好邻接矩阵,再设计深度优先算法(你可以用栈,或者用递归,或者你都试一下)。第二步,从栈中取出一个点p访问(打印),然后将所有p的邻居入栈。为了完成本关任务,你需要掌握:1.如何用邻接矩阵定义图,2.如何设计图的深度优先遍历算法。深度优先遍历-用栈实现。

2024-12-01 02:18:00 300

原创 第3关:图的广度遍历

假设从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过和邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。// 若循环队列不空,则删除Q的队头元素,用e返回其值,并返回OK;// 若循环队列不空,则用e返回Q的队头元素,并返回OK;// 返回Q的元素个数,即循环队列的长度。

2024-12-01 02:13:09 526

原创 第2关:图的深度遍历

/从第v个顶点出发递归地深度优先遍历图G。// 访问标志数组初始化(未被访问)// 操作结果:从第1个顶点起,深度优先遍历图G,并对每个顶点访问一次且仅一次。// 对尚未访问的顶点v调用DFS。高等数学 程序设计基础 C语言 离散数学 数据结构 编译原理 操作系统。高等数学 离散数学 编译原理 数据结构 操作系统 C语言 程序设计基础。选择一个与顶点v相邻且没被访问过的顶点w,从w出发深度优先遍历。// 初始条件:图G存在,vi是顶点的输出函数的指针。程序设计基础→C语言 程序设计基础→数据结构。

2024-12-01 02:12:25 566

原创 第1关:图的邻接表存储及求邻接点操作

第i个单链表中的每一个结点(也称为表结点)均含有三个域:邻接点域、链域和数据域,邻接点域用来存放与顶点vi相邻接的一个顶点的序号,链域用来指向下一个表结点,数据域info存储边的信息(如果边上没有权值,可以省略该info数据域)//v是图G中某个顶点,w是v的邻接顶点,返回v的(相对于w的)下一个邻接顶点的序号。在图的邻接表结构中,用一个连续存储区域来存储图中各顶点的数据,并对图中每个顶点vi建立一个单链表(称为vi的邻接表),把顶点vi的所有相邻顶点(即后继结点)的序号链接起来。// 输出图的邻接表G。

2024-12-01 02:11:35 664

原创 第2关:输出哈夫曼编码

注意makecode是一个递归程序,它从根结点开始填写所有结点的编码(从根结点到内结点i的路径上的01串也记录在内结点的HT[i].code中)。那么从根结点到每个叶子结点的路径上,如果是左孩子则标注1,右孩子则标注0,于是从根结点到叶子结点可以得到一个01串,即是叶子结点的哈夫曼编码。已知叶子结点的定义是。首先把第一关通过的部分代码void SelectTwoMin(bnode HT[],int len, int &min1, int &min2)复制过来,以完成哈夫曼树的构造。//到根结点的路径长度。

2024-11-22 19:57:04 255

原创 第1关:建立一棵哈夫曼树

第二步,在当前所有的树中,选择两个根结点权值最小的树,建立一个新的内结点,让这两个树分别作为左右孩子,新的内结点的权值为左右孩子的权和。比较方便的存储方法是n个叶子结点存在HT数组的前n个位置,n-1个内结点存在后部。它有n个叶子结点,n-1个内结点,因此一共有2n-1个结点,从而有2n-2条边,并且每个内结点都有2个孩子结点。构造时,规定每个结点都有权值,叶子结点的权值为输入时给定,内结点的权值为两个孩子结点的权和。//到根结点的路径长度。图1 权值为(1,2,3,4,5)的哈夫曼曼树及哈夫曼编码。

2024-11-22 19:53:48 418 1

原创 第2关:求笛卡尔积

y,<x,y>和<y,x>代表两个不同的坐标位置。我们称两个具有固定次序的对象为序偶(有序对),记为<x,y>。令A×B={<x,y>∣x∈A且y∈B} 称集合A×B为A和B的笛卡儿积或直积。设<x,y>和<u,v>两个序偶,若x=u, 且y=v,则称这两个序偶相等,记为<x,y>=<u,v>。集合中的元素是无序的,有些情况下我们需要用固定次序的元素来描述对象,如直角坐标的位置<x,y>,当x。本例中,集合用一维数组表示,假定集合元素均为整数。例如:设A={a,b},B={1,2,3},则。

2024-11-19 21:33:07 236

原创 第1关:集合基本运算

但是,在一个集合中,同样的元素没必要出现两次或两次以上,所以,在将集合 A 送入并集 Union 后,应将集合 B 中与 A 中相同的元素删除,再将集合 B 送入并集Union之中。差集 Sub的定义:差集 Sub={x|x∈A∧x∉B},即对于集合 A 中的元素 A[i],若不存在B[j] ∈B(j=1,2,…根据交集的定义:IN={x|x∈A∧x∈B},我们将集合 A 的各个元素与集合 B的元素进行比较,若在集合 B 中存在某个元素和集合 A 中一元素相等,则将该元素送入交集 IN之中。

2024-11-19 21:32:07 441

原创 第1关:先序遍历创建二叉链表存储的二叉树及遍历

在顺序存储结构中,利用数组下标表示元素的位置及元素之间孩子或双亲的关系,因此对于非完全二叉树,如果需要增加很多空结点才能将一棵二叉树改造成为一棵完全二叉树,采用顺序存储结构会造成空间的大量浪费,这时不宜用顺序存储结构, 而应该考虑使用链式存储结构。中序遍历序列的特点:若已知二叉树的根结点值,以该值为界,将中序遍历序列分为两部分,前半部分为左子树的中序遍历序列,后半部分为右子树的中序遍历序列。lchild和rchild分别表示左指针域和右指针域,分别存储左孩子和右孩子结点(即左、右子树的根结点)的存储地址。

2024-11-17 22:48:07 1644

原创 第2关:计算二叉树的高度、总节点个数和叶子节点个数

NULL时,f(b->lchild)和f(b->rchild)分别为结点b的左子树的节点数和右子树的节点数,则二叉树b的节点数为f(b->lchild)+f(b->rchild)+1。=NULL时,f(b->lchild)和f(b->rchild)分别为结点b的左、右子树的高度,取f(b->lchild)和f(b->rchild)中较大值加1,即为二叉树b的高度。叶子节点是度为0的节点,二叉树节点的度为子树的个数。分别递归计算左子树和右子树的叶子节点数,则当前二叉树的节点数为左、右子树的节点数之和。

2024-11-17 22:47:08 840

原创 第3关:层次遍历二叉树

/ 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;本关卡提供链队列linkqueue的相关操作和功能,链队列数据类型定义及相关操作函数接口定义如下,在进行二叉树的层次遍历的过程中,你可以根据需要调用以下操作。// 若队列不空,则用e返回Q的队头元素,并返回OK;// 若队列Q为空队列,则返回TRUE;// 插入元素e为Q的新的队尾元素。// 返回Q的元素个数,即队列的长度。

2024-11-17 22:46:02 513

原创 第4关:递归实现二叉树左右子树交换

一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。二叉树的每个节点最多只有两个分支,通常分支被称作左子树和右子树,并且二叉树的分支具有左右次序,不能颠倒。本关任务:给定一棵二叉树,使用递归的方法实现二叉树的左右子树交换,并输出交换后的二叉树的中序遍历结果。左右子树交换实例如下:图1是原始二叉树,图2是图1交换左右子树后的二叉树。交换前二叉树中序遍历:C,B,D,A,F,E,交换后二叉树中序遍历:E,F,A,D,B,C,第一行是交换前二叉树的中序遍历序列;

2024-11-17 22:45:09 726

原创 第5关:非递归实现二叉树左右子树交换

/ 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;// 若栈不空,则用e返回S的栈顶元素,并返回OK;// 若栈S为空栈,则返回TRUE,否则返回FALSE。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题 ,这就需要把递归算法转换为非递归算法。// 返回S的元素个数,即栈的长度。// 销毁栈S,S不再存在。

2024-11-17 22:44:22 1140

原创 第6关:非递归实现二叉树的中序遍历

中序遍历的非递归和前序遍历的非递归很相似,只是前序遍历是根-左-右,而中序遍历左-根-右,也就是说,中序遍历是:先遇到根节点不访问,而是直接压入栈,当左子树节点为空时,取出左子树节点,并访问左子树节点的右子树。// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;// 若栈不空,则用e返回S的栈顶元素,并返回OK;如果没有右子树,则回退,让此时的栈顶元素出栈,访问栈顶元素,并访问栈顶元素的右子树,重复第1步,第2步;// 若栈S为空栈,则返回TRUE,否则返回FALSE。//栈的基址即栈底指针。

2024-11-17 22:43:20 882

原创 第7关:复制二叉树

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 23:17:14 456

原创 第8关:交换二叉树的左右孩子指针

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 22:26:50 410

原创 第6关:顺序存储二叉树转二叉链表

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 22:26:07 850

原创 第5关:中序遍历二叉树

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 22:04:01 498

原创 第4关:求二叉树的高度

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 22:03:00 463

原创 第3关:先序遍历二叉树

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 22:01:54 335

原创 第2关:访问二叉树的叶子节点

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 21:58:54 509

原创 第1关:头文件基本函数的实现

二叉树是一种非常重要的结构。由于二叉树的各子结构与整个结构具有相似的特性,因而其算法大多采用递归形式,这是一个难点,但也是非常重要的技术基础。从实验的要求和特点出发,偏重于二叉树的存储结构和遍历运算及其应用,同时,借助于递归算法的运用熟练掌握递归技术。说明:为使实验程序简洁直观,下面的部分实验程序中的一些功能实现仍以调用库函数程序"btrechar.h"中的函数的形式给出,并假设该库函数中定义了二叉树指针和结点类型分别为bitre和bnode,以及部分常用运算,例如构建二叉树、以某种方式显示二叉树等。

2024-11-07 21:57:51 486

原创 第2关:稀疏矩阵转置

先把你已经通过的第一关的SM_SetAt代码复制过来,然后编写本关的代码。在这个代码里,你需要自己创建一个稀疏矩阵A的转置矩阵,并返回。A的转置矩阵B满足B(i,j)=A(j,i)预期输出:"correct!测试输入:1 2 0.3;你的任务吧,祝你成功!

2024-11-01 21:11:25 280

原创 第3关:命题逻辑推理

2、将复合命题中要用到的联结词定义为C语言中的逻辑运算,用变量表示相应的命题变元。若p=1则表示A作案,q=1则表示B作案。根据提示,在右侧编辑器补充代码,计算并输出p、q、r、s、t的值。根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程。1、符号化上面的命题,将它们作为条件,得一个复合命题。(4)若B提供的证据不正确,则作案发生在营业时间;(3)若B提供的证据正确,则货柜未上锁;开始你的任务吧,祝你成功!(2)(略,自行补充)(3)(略,自行补充)(4)(略,自行补充)(5)(略,自行补充)

2024-11-01 16:57:04 359

空空如也

空空如也

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

TA关注的人

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