(1)输入字符序列,建立二叉链表。
(2)先序、中序、后序遍历二叉树:递归算法。
(3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。
(4)求二叉树的高度。
(5)求二叉树的叶子个数。
(6)对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
(8)借助队列实现二叉树的层次遍历。
(9)在主函数中设计一个简单的菜单,分别调试上述算法。
2024/9/16 7:26:37 88KB 二叉树
1
编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序、中序、后序以及层次遍历结点访问次序。
其中层次遍历的实现需使用循环队列。
二叉树结点数据类型建议选用字符类型
1
1、问题描述:若要在n个城市之间建设通信网络,只需要假设n-1条线路即可。
如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题2、利用克鲁斯卡尔算法求网的最小生成树;
3、以用户指定的结点为起点,分别输出每种遍历下的结点访问序列;
4、输入为存在边的顶点对,以及它们之间的权值;
输出为所得到的邻接矩阵以及按权排序后的边和最后得到的最小生成树;
2024/9/2 11:43:37 36KB 最小生成树 实验报告 C
1
链表中删除相同结点实验报告及源码,数据结构课的实验报告,源码在实验报告里。
2024/8/24 13:17:40 240KB 数据结构 链表
1
实验内容1.二分查找又称为折半查找,它要求要查找的顺序表必须是有序表,即表中结点按关键字有序.并且要用顺序存储结构。
基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则查找成功,否则根据比较的结果确定下次查找的范围是在中间记录的前半部分还是后半部分,然后在新的查找范围内进行同样的查找,如此重复下去,直到在表中找到关键字与给定值相等的记录,或者确定表中没有这样的记录。
编写程序构造一个有序表La,从键盘接收一个关键字key,用二分查找法在La中查找key,若找到则提示查找成功并输出key所在的位置,否则提示没有找到信息。
2.编写程序实现Hash表的建立、删除、插入以及查找操作。
程序应包含的主要功能函数有:Hash():计算哈希地址InitialHash():初始化哈希表SearchHash():在哈希表中查找关键字InsertHash():向哈希表中插入关键字DeleteHash():删除哈希表中某一关键字PrintHash():打印输出哈希表
2024/8/23 7:52:55 43KB 二分查找 hash 数据结构 代码
1
模拟Linux文件系统。
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。
2.编写一管理程序对此空间进行管理,以模拟Linux文件系统,具体要求如下:(1)要求盘块大小1k正规文件(2)i结点文件类型目录文件(共1byte)块设备管道文件物理地址(索引表)共有13个表项,每表项2byte文件长度4byte。
联结计数1byte(3)0号块超级块栈长度50空闲盘块的管理:成组链接(UNIX)位示图法(Linux)(4)每建一个目录,分配4个物理块文件名14byte(5)目录项信息i结点号2byte(6)结构:0#:超级块1#-20#号为i结点区20#-30#号为根目录区3.该管理程序的功能要求如下:(1)能够显示整个系统信息,源文件可以进行读写保护。
目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。
(2)改变目录:改变当前工作目录,目录不存在时给出出错信息。
(3)显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。
(4)创建目录:在指定路径或当前路径下创建指定目录。
重名时给出错信息。
(5)删除目录:删除指定目录下所有文件和子目录。
要删目录不空时,要给出提示是否要删除。
(6)建立文件(需给出文件名,文件长度)。
(7)打开文件(显示文件所占的盘块)。
(8)删除文件:删除指定文件,不存在时给出出错信息。
4.程序的总体流程为:(1)初始化文件目录;
(2)输出提示符,等待接受命令,分析键入的命令;
(3)对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
2024/8/13 8:58:42 1.74MB linux 目录 文件 创建
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
项目描述: 主函数分为两部分:1.登录函数 2.主菜单功能函数 一、登录函数运用到坐标读取,bmp图片显示,文件读写等操作,其中,注册用户用到了文件的写入, 把注册的信息写入到用户信息文本。
登录时,用到文件的读,把存放用户信息的文本内容读取出来并存放在单向链表中, 登录时,通过字符串比较函数匹配账号密码时候正确 二、是主菜单功能函数,该函数主要有四部分功能函数组成,分别为音乐播放函数,视频播放函数,电子相册,2048小游戏函数组成 音乐播放函数:主要利用递归读取目录把读到的.mp3后缀名的文件的路径名用双向循环链表存放起来,利用madplay相关命令进行播放,暂停等操作。
视频播放函数:主要利用递归读取目录把读到的.mp4或者.avi后缀名的文件的路径名用双向循环链表存放起来,利用mplayer相关命令进行播放,暂停等操作。
电子相册:主要利用归读取目录把读到的.bmp后缀名的文件的路径名用双向循环链表存放起来,利用读取坐标判断点击或者滑动的相关操作进行图片显示 其中,进入电子相册,默认路径下的所有图片均按一定比例缩放在一定区域浏览,可通过滑动翻至另外预览图片页, 也可通过点击预览图片进入原始比例大小查看,在原始比例大小查看期间,可点击放大或者缩小,也可以通过滑动显示下一张图片的原始比例大小的查看。
在图片显示过程中,图片显示效果主要是由中间向两边扩散。
不足之处:图片缩放利用的是直接改变前54字节头结点的信息,当图片宽度w*3%4不等于0时 缩放图片变形(原因:bmp图片特点导致,利用该方法无法解决该缺点) 2048小游戏:利用二维数组表示每行每列的数字,通过方向键或者左右上下滑动来确定数字要移动的方向,通过左右移,上下移的函数算法,进行相应的逻辑处理 最后以图片显示和打印的结果显示。
在每一次改变后,把改变后的二维数组,以及剩余的空白格子数存放在栈式链中,利用栈的后进先出的逻辑实现 返回上一步的功能
2024/8/8 4:46:45 33KB 文件io 音视频 相册 2048小游戏
1
1本程序在vc++6.0编译通过并能正常运行。
2主界面程序已经尽量做到操作简便了,用户只需要根据提示一步步进行操作就行了。
六思考和总结:这个课程设计的各个基本操作大部分都在我的综合性实验中实现了,所以做这个主要攻克插入和删除这两个算法!其中插入在书本上已经有了,其中的右平衡算法虽然没有给出,但通过给出的左平衡算法很容易就可以写出右平衡算法。
所以最终的点就在于删除算法的实现!做的过程中对插入算法进行了非常非常多次的尝试!花了非常多的时间,这其中很多时候是在对程序进行单步调试,运用了VC6。
0的众多良好工具,也学到了很多它的许多好的调试手段。
其中删除算法中最难想到的一点是:在用叶子结点代替要删除的非叶子结点后,应该递归的运用删除算法去删除叶子结点!这就是整个算法的核心,其中很强烈得体会到的递归的强大,递归的最高境界(我暂时能看到的境界)!其它的都没什么了。
选做的那两个算法很容易实现的:1合并两棵平衡二叉排序树:只需遍历其中的一棵,将它的每一个元素插入到另一棵即可。
2拆分两棵平衡二叉排序树:只需以根结点为中心,左子树独立为一棵,右子树独立为一棵,最后将根插入到左子树或右子树即可。
BSTreeEmpty(BSTreeT)初始条件:平衡二叉排序树存在。
操作结果:若T为空平衡二叉排序树,则返回TRUE,否则FALSE.BSTreeDepth(BSTreeT)初始条件:平衡二叉排序树存在。
操作结果:返回T的深度。
LeafNum(BSTreeT)求叶子结点数,非递归中序遍历NodeNum(BSTreeT)求结点数,非递归中序遍历DestoryBSTree(BSTree*T)后序遍历销毁平衡二叉排序树TR_Rotate(BSTree*p)对以*p为根的平衡二叉排序树作右旋处理,处理之后p指向新的树根结点即旋转处理之前的左子树的根结点L_Rotate(BSTree*p)对以*p为根的平衡二叉排序树作左旋处理,处理之后p指向新的树根结点,即旋转处理之前的右子树的根结点LeftBalance(BSTree*T)对以指针T所指结点为根的平衡二叉排序树作左平衡旋转处理,本算法结束时,指针T指向新的根结点RightBalance(BSTree*T)对以指针T所指结点为根的平衡二叉排序树作右平衡旋转处理,本算法结束时,指针T指向新的根结点Insert_AVL(BSTree*T,TElemTypee,int*taller)若在平衡的二叉排序树T中不存在和e有相同的关键字的结点,则插入一个数据元素为e的新结点,并返回OK,否则返回ERROR.若因插入而使二叉排序树失去平衡,则作平衡旋转处理布尔变量taller反映T长高与否InOrderTraverse(BSTreeT)递归中序遍历输出平衡二叉排序树SearchBST(BSTreeT,TElemTypee,BSTree*f,BSTree*p)在根指针T所指的平衡二叉排序树中递归的查找其元素值等于e的数据元素,若查找成功,则指针p指向该数据元素结点,并返回TRUE,否则指针p指向查找路径上访问的最后一个结点并返回FALSE,指针f指向T的双亲,其初始调用值为NULLDelete_AVL(BSTree*T,TElemTypee,int*shorter)在平衡二叉排序树中删除元素值为e的结点,成功返回OK,失败返回ERRORPrintBSTree_GList(BSTreeT)以广义表形式打印出来PrintBSTree_AoList(BSTreeT,intlength)以凹入表形式打印,length初始值为0Combine_Two_AVL(BSTree*T1,BSTreeT2)合并两棵平衡二叉排序树Split_AVL(BSTreeT,BSTree*T1,BSTree*T2)拆分两棵平衡二叉树}(2)存储结构的定义:typedefstructBSTNode{ TElemTypedata; intbf;//结点的平衡因子 structBSTNode*lchild,*rchild;//左.右孩子指针}BSTNode,*BSTree;
1
数据结构小代码,改自《数据结构与算法分析C++版》源代码1.编写使用freelist的带头、尾结点的双向链表类的定义,实现双向链表的基本操作。
2.利用双向链表实现2个一元稀疏多项式的加法运算,运算结果得到的链表要求按照指数升序有序,并遍历输出指数升序、指数降序的多项式。
2024/6/12 2:41:24 1.19MB datastructur
1
共 118 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡