C语言实现二叉树的创建、插入、删除、遍历(先序、中序、后续、深度优先、广度优先)、计算度为0,1,2的节点个数。
包括排序二叉树的实现
2024/9/19 22:29:52 765KB 二叉树
1
(1)输入字符序列,建立二叉链表。
(2)先序、中序、后序遍历二叉树:递归算法。
(3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。
(4)求二叉树的高度。
(5)求二叉树的叶子个数。
(6)对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
(8)借助队列实现二叉树的层次遍历。
(9)在主函数中设计一个简单的菜单,分别调试上述算法。
2024/9/16 7:26:37 88KB 二叉树
1
研究深度学习和卷积神经网络的同学都知道Mnist这个数据库,它是一个手写数字的图像数据集,可以用来作为网络训练的基准测试数据库。
原版数据集是以特定格式存储的四个文件,包括乱序排列的60000个训练样本与10000个测试样本,以及它们对应的标签向量。
现将其中的图片从原文件中读取出来,重新转化为png格式,并将测试集和训练集分别按0~9进行分类,并存放在各自的子文件夹中,以便各位同学进行科研与实验之用。
原数据集下载地址为:http://yann.lecun.com/exdb/mnist/
1
编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序、中序、后序以及层次遍历结点访问次序。
其中层次遍历的实现需使用循环队列。
二叉树结点数据类型建议选用字符类型
1
第二题[提示](1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。
进程控制块的格式为:进程名指针要求运行时间已运行时间状态其中,进程名----作为进程的标识,假设五个进程的进程名分别是Q1,Q2,Q3,Q4,Q5。
指针----进程按顺序排成循环队列,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一个进程的进程控制块首地址。
要求运行时间----假设进程需要运行的单位时间数。
已运行时间----假设进程已经运行的单位时间数,初始值为“0”。
状态----有两种状态,“就绪”状态和“结束”状态,初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态变为“结束”,用“E”表示。
(2) 每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“要求运行时间”。
把五个进程按顺序排成循环队列,用指针指出队列连接情况。
另用一标志单元记录轮到运行的进程。
(3) 处理器调度总是选择标志单元指示的进程运行。
由于本实验是模拟处理器调度的功能,所以,对被选中的进程并不实际启动运行,而是执行:已运行时间+1来模拟进程的一次运行,表示进程已经运行过一个单位的时间。
请注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。
在这里省去了这些工作,仅用“已运行时间+1”来表示进程已经运行满一个时间片。
(4) 进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。
同时,应判断该进程的要求运行时间与已运行时间,若该进程要求运行时间≠已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。
若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应把它的状态修改为“结束”(E)且退出队列。
此时,应把该进程的进程控制块中的指针值送到前面一个进程的指针位置。
(5) 若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。
(6) 在所设计的称序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进称对列的变化。
(7) 为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。
1
设二叉排序树的二叉链表存储结构的类型定义如下:typedefstructnode{intdata;//用整数表示一个结点的名structnode*LChild,*RChild;//左右指针域}BSTNode,*BSTree;设计算法并编写程序求解以下几个问题。
8121410731562415119131613(1)键盘输入一个元素序列创建一棵二叉排序树,输出该二叉排序树的中序遍历序列;
例如,若输入45,24,55,12,37,53,60,23,40,70则创建的二叉排序树为:输出结果为:12232437404553556070(2)在(1)中所得的二叉排序树中插入一个值为58的结点,再输出它的中序遍历序列,输出结果为:1223243740455355586070(3)在(1)中所得的二叉排序树中删除值为45的结点,再输出它的中序遍历序列,输出结果为:12232437405355586070(4)利用(1)中所得的二叉排序树的所有叶子结点构造一个带头结点的单链表L。
要求不能破坏这棵二叉排序树。
所得的单链表L如下。
输出该链表各结点的值,输出结果为:23405370(5)设计算法将(1)中所得的二叉排序树的左右子树进行交换,由于二叉树是一种递归定义,所以子树的左右两棵子树也要相交换,依此类推。
最后输出所得到的二叉树的中序遍历序列。
例如,经过上述操作后,(1)中所得的二叉排序树变为如下形式。
输出该二叉树的中序序列,结果为:70605553454037242312(6)设计算法统计并输出(1)中所得的二叉排序树中只有一个孩子结点的结点个数。
输出结果为:3(7)在(1)中所得的二叉排序树中,设计算法并编写程序输出结点40的所有祖先结点。
输出结果为:452437
2024/8/12 15:36:41 39KB 数据结构 C C++
1
本文件含有两个程序,采用硬件IIC,一个是IIC主机发送程序,一个是IIC从机接收发送程序,实验现象是,在两块开发板上,连接上IIC线序(不用交叉),主机发送三个字节数据,从机接收到三个字节数据后,将数据发送回主机,完成主从机的通信,在IIC初试化中可以看到主机的地址设为了0x0A(主机地址没有用到,只是为了和从机进行区分),从机的地址设为了0x0B
2024/7/22 7:33:27 64.68MB stm32f407 cubemax IIC主从通信
1
二叉树层序遍历.mp4
2024/7/21 22:04:22 37.46MB 数据结构
1
《VisualC++MFC编程实例》配套代码目录译者序前言第一部分基础知识第1章窗口 21.1窗口和API环境 21.1.1三种类型窗口 21.1.2客户区和非客户区 31.2窗口和MFC环境 41.3怎样应用MFC创建一个窗口 51.4怎样使用MFC销毁一个窗口 91.4.1捆绑到一个已有的窗口 91.4.2窗口类 101.4.3窗口进程 101.5怎样使用MFC创建一个窗口类 111.5.1使用AfxRegisterWndClass()函数注册一个窗口类 111.5.2使用AfxRegisterClass()函数创建一个窗口类 121.6怎样销毁一个MFC窗口类 141.7厂商安装的窗口类 141.8其他类型窗口 151.9桌面窗口 161.10小结 16第2章类 182.1基类 182.1.1CObject 182.1.2CCmdTarget 192.1.3CWnd 192.2应用程序、框架、文档和视图类 192.2.1CWinApp(O/C/W) 202.2.2CView(O/C/W) 212.3其他用户界面类 222.3.1通用控件类 232.3.2菜单类 232.3.3对话框类 242.3.4控制条类 242.3.5属性类 252.4绘图类 252.4.1设备环境类 252.4.2图形对象类 252.5文件类 262.6数据库类 262.6.1ODBC类 262.6.2DAO类 272.7数据集类 272.8其他数据类 272.9通信类 282.10其他类 292.11小结 31第3章消息处理 323.1发送或寄送一个消息 323.1.1发送一个消息 323.1.2寄送一个消息 323.1.3发送一个消息与寄送一个消息的比较 323.2怎样使用MFC发送一个消息 333.3怎样用MFC寄送一个消息 333.4三种类型的消息 343.4.1窗口消息 343.4.2命令消息 343.4.3控件通知 343.5MFC怎样接收一个寄送的消息 363.6MFC怎样处理一个接收到的消息 363.7处理用户界面的对象 443.8创建自定义窗口消息 453.8.1静态分配的窗口消息 453.8.2动态分配的窗口消息 463.9重定向消息 473.9.1子分类和超分类 473.9.2用MFC子分类窗口 483.9.3重载OnCmdMsg() 493.9.4使用SetWindowsHookEx() 493.9.5使用SetCapture() 493.9.6专有的消息泵 503.10小结 50第4章绘图 514.1设备环境 514.2在MFC环境中创建一个设备环境 524.2.1屏幕 524.2.2打印机 534.2.3内存 544.2.4信息 544.3绘图例程 554.3.1画点 554.3.2画线 554.3.3画形状 554.3.4形状填充和翻转 554.3.5滚动 564.3.6绘制文本 564.3.7绘制位图和图标 564.4绘图属性 564.4.1设备环境属性 574.4.2画线属性 584.4.3形状填充属性 584.4.4文本绘制属性 584.4.5映像模式 594.4.6调色板属性 624.4.7混合属性 624.4.8剪裁属性 634.4.9位图绘制属性 644.5元文件和路径 654.5.1元文件 654.5.2路径 664.6颜色和调色板 664.6.1抖动色 674.6.2未经抖动色 674.6.3系统调色板 674.6.4使用系统调色板 684.6.5动画色 714.7控制什么时候在哪里绘图 714.7.1处理WM_PAINT 714.7.2只绘制被无效化的
2024/7/20 14:29:27 4.61MB Visual C++ MFC编程实例源代码
1
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------IEC-60870-5-104:应用模型是:物理层,链路层,网络层,传输层,应用层物理层保证数据的正确送达,保证如何避免冲突。
(物理层利用如RS232上利用全双工)链路层负责具体对那个slave的通讯,对于成功与否,是否重传由链路层控制(RS4852线利用禁止链路层确认)应用层负责具体的一些应用,如问全数据还是单点数据还是类数据等(网络利用CSMA/CD等保证避免冲突的发生)---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------基本定义:端口号2404,站端为Server控端为Client,平衡式传输,2Byte站地址,2Byte传送原因,3Byte信息地址。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------注:APDU应用规约数据单元(整个数据)=APCI应用规约控制信息(固定6个字节)+ASDU应用服务数据单元(长度可变)---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------APDU长度(系统-特定参数,指定每个系统APDU的最大长度)APDU的最大长度域为253(缺省)。
视具体系统最大长度可以压缩。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------【1个例子】104报文分析BUF序0123456789.10111213141516171819202122M->R:6815100002001E01030001007900000110012413D20A02分析的结果是I(主动上报SOE,主动上报是因为104是平衡式规约)报文头固定为0x68,即十进制104长度15字节(不是6帧的,都是I帧)发送序号=8【控制字节的解析10000200,发送序号:0010H/2=16/2=8】接收序号=1【控制字节的解析10000200,接收序号:0002H/2=2/2=1】0x1E=30即M_SP_TB_1带长时标的单点信息01->SQ:0信号个数:10300->传送原因:[T=0P/N=0原因=3|突发]0100->公共地址:1790000->0x79=121信息体地址:12101->状态:1IV:0NT:0SB:0BL:010012413D20A02->低位10高位01,即0x0110=1*16*16+16=272时标:2002/10/1819:36:00.272
2024/7/5 19:30:53 366KB 104 规约 报文详解
1
共 236 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡