- 博客(250)
- 收藏
- 关注
原创 PTA:线性探测法的查找函数
本文介绍了如何实现开放地址散列表的线性探测查找函数。题目要求根据哈希函数在散列表中查找指定键值,返回其位置或第一个空单元位置。解题思路是:1)通过哈希函数计算初始位置;2)若该位置被占用但不是目标,则线性探测后续位置;3)找到目标、空位或遍历完整个表则停止。代码实现使用do-while循环进行线性探测,处理了表满和查找成功/失败的情况。测试样例展示了三种不同查找结果:找到元素、返回空位位置以及表满报错的情况。该实现体现了哈希表线性探测法的核心思想。
2025-05-24 22:56:41
225
原创 PTA:双端队列
双端队列(deque)是一种允许在两端进行插入和删除操作的数据结构,结合了队列和栈的特性。与普通队列相比,双端队列的操作更加灵活,支持在头部和尾部进行元素的插入和删除。本文通过顺序存储方式实现了双端队列的基本操作,包括Push(头部插入)、Pop(头部删除)、Inject(尾部插入)和Eject(尾部删除)。通过环形缓冲区实现,避免了“假溢出”问题,并使用取模运算处理边界条件。与普通队列相比,双端队列的应用场景更广泛,如滑动窗口、回文检查等,但实现复杂度也更高。
2025-05-22 20:25:22
509
原创 PTA:龟兔赛跑
在这道题目中,乌龟和兔子在矩形跑道上进行赛跑。乌龟以每分钟3米的速度持续前进,而兔子以每分钟9米的速度前进,但每跑10分钟后会检查是否领先乌龟,如果领先则休息30分钟,否则继续跑10分钟。比赛时间为T分钟。通过计算,乌龟的总距离为3T米。兔子的运动状态较为复杂,需要通过循环模拟其跑步和休息的过程。最终比较两者的总距离,输出比赛结果及胜利者跑完的距离。代码中使用了min函数来确保模拟时间不超过总时间T。
2025-05-17 23:00:53
380
原创 PTA:我爱背单词
这道题目要求实现一个程序,能够从一段英文文章中提取出用户未背过的生词,并按出现顺序输出,且每个生词只输出一次。输入包括已背单词的数量、已背单词列表和一段英文文章。程序需要找出文章中的生词,并确保输出时不重复。初始代码存在重复项处理不当和标记逻辑错误的问题。修改后的代码通过双重循环检查每个生词是否在之前出现过,避免了重复输出,并正确标记已输出的生词。最终程序能够按要求输出所有未背过的生词,且每个生词只输出一次。
2025-05-15 08:50:27
242
原创 PTA:jmu-ds-最短路径
摘要:本文介绍了如何使用Dijkstra算法在有向图中计算从源点0到其他所有顶点的最短路径。Dijkstra算法是一种贪心算法,适用于边权非负的图。文章详细描述了算法的实现步骤,包括初始化距离数组、路径数组和标记数组,以及迭代过程中选择最小距离顶点并更新邻接顶点距离的过程。最终,通过调用Dispath函数输出从源点到各顶点的最短路径及其长度。代码示例展示了如何通过邻接矩阵表示图,并实现Dijkstra算法来求解最短路径问题。
2025-05-12 23:16:51
353
原创 第八章--图
类比前面所学的线性表和树,图就是多对多的关系。再详细点的定义就是:图由顶点集合V(G)和边集合E(G)组成。顶点集合V(G)是一组元素的集合,这些元素称为顶点(或节点);边集合E(G)是由顶点对组成的集合,这些顶点对表示顶点之间的关系,称为边。
2025-05-06 22:07:02
1199
原创 PTA:出生年
以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。
2025-05-03 23:47:44
321
原创 PTA:前序序列创建二叉树
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以二叉链表存储)。例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,代表一棵空树。然后再对二叉树进行中序遍历,输出遍历结果。
2025-04-26 14:53:48
262
原创 PTA:冒泡法排序
将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。
2025-04-24 00:01:44
660
原创 PTA:玩转二叉树
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。
2025-04-19 16:10:01
635
原创 查找--哈希表
由哈希函数H(key)和处理冲突的方法:将一组关键字映像到一个有限的、地址连续的地址集(区间)上,并以关键字在地址集中的“像”作为相应记录在表中的存储位置,如此构造所得的查找表称之为“哈希表”。
2025-04-19 01:45:16
1054
原创 PTA: jmu-ds-顺序表区间元素删除
若一个线性表L采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)。
2025-04-12 22:10:28
264
原创 PTA:猴子选大王
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
2025-04-12 11:51:41
232
原创 PTA:找出总分最高的学生
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。
2025-04-11 23:40:09
163
原创 第四章--字符串、数组与广义表
本文主要围绕串的基本操作的定义,对最小操作子集中的基本操作实现其他较复杂的操作、串的定长顺序存储及其操作实现算法、串的堆存储结构、串的链式存储,其中如何确定结点的大小很关键、串的模式匹配算法,KMP 算法思想及其实现等展开。
2025-04-10 22:29:20
1035
原创 PTA:哈夫曼树
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出哈夫曼树的带权路径长度(WPL)。
2025-04-09 23:34:21
143
1
原创 PTA: jmu-ds-简单密码
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。密文明文你的任务是对给定的密文进行解密得到明文。你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。
2025-04-08 23:51:26
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人