- 博客(30)
- 收藏
- 关注
原创 DS串应用—最长重复子串
求串的最长重复子串长度(子串不重叠)。例如:abcaefabcabc的最长重复子串是串abca,长度为4。对每个测试串,输出最长重复子串长度,若没有重复子串,输出-1.
2024-10-25 22:13:33
158
原创 A. 串应用- 计算一个串的最长的真前后缀
给定一个串,如ABCDAB,则 ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA } ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB } 因此,该串的真前缀和真后缀中最长的相等串为AB,我们称之为该串的“最长的真前后缀”。试实现一个函数string matched_Prefix_Postfix(string str),得到输入串str的最长的真前后缀。若不存在最长的真前后缀则输出empty。n个最长的真前后缀,若不存在最长的真前后缀则输出empty。
2024-10-25 21:14:18
200
原创 DS顺序表--合并操作
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等。第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等。已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增互不相等。建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开。第1行输出创建后的顺序表内容。
2024-10-25 16:00:58
267
原创 B. DS顺序表--连续操作
插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。删除多个数据的multidel(int i, int n)函数,实现从第i个位置开始,连续删除n个数据,即从位置i开始删除多个数据。第2行先输入i表示插入开始的位置,再输入k表示有k个插入数据,接着输入k个数据。第1行先输入n表示有n个数据,即n是实际长度;第3行先输入i表示删除开始的位置,再输入k表示要删除k个数据。
2024-10-25 15:38:05
390
原创 A. DS顺序表--类实现
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容。第i个位置是逻辑意义的位置,从1开始,在实际编程用数组,从0开始,对应数组i-1位置。第1行先输入n表示有n个数据,即n是实际长度;每成功执行一次操作(插入或删除),输出执行后的顺序表内容。第1行输出创建后的顺序表内容,包括顺序表实际长度和数据。第2行输入要插入的位置和新数据。第3行输入要插入的位置和新数据。第4行输入要删除的位置。第5行输入要删除的位置。第6行输入要查找的位置。第7行输入要查找的位置。
2024-10-25 15:10:00
256
原创 DS队列+堆栈--数制转换
对于任意十进制数转换为k进制,包括整数部分和小数部分转换。整数部分采用除k求余法,小数部分采用乘k取整法例如x=19.125,求2进制转换。接下来每行包含两个参数n和k,n表示要转换的数值,可能是非整数;所以整数部分转为 10011,小数部分转为0.001,合起来为10011.001。对于每一组测试数据,每行输出转换后的结果,结果精度到小数点后3位。第一行输入一个t,表示下面将有t组测试数据。整数部分19, 小数部分0.125。提示整数部分可用堆栈,小数部分可用队列实现。
2024-10-11 16:46:02
198
原创 DS队列——约瑟夫环
接着约定一个正整数 k,从编号为 1 的人开始顺时针报数(编号为 1 的人报数 1 ,编号为 2 的人报数 2 ……),报到 k 的人离开圈子,然后他的下一个人继续从 1 开始报数,以此类推,直到圈子里只剩下一个人。的报数过程,并按先后顺序输出离开圈子的人最开始的编号。为了统一起见,圈子里的最后一个人也需要离开圈子。每个测试用例包含两个整数 n、k(1≤n≤100, 1≤k≤100),含义如题目描述所示。输出 n 个整数,按先后顺序表示离开圈子的的人最开始的编号。第一行输入 T ,表示 T 个测试用例;
2024-10-11 16:30:51
498
原创 DS队列----银行单队列多窗口模拟
假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。在一行中输出平均等待时间(输出到小数点后1位)、最长等待时间、最后完成时间,之间用1个空格分隔,行末不能有多余空格。最后一行给出正整数K(≤10),为开设的营业窗口数。输入第1行给出正整数N(≤1000),为顾客总人数;本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间。
2024-10-11 16:29:57
832
原创 DS队列--组队列
以此类推输入完t组以定义同组元素之后,开始输入多个操作命令(<200),对空的组队列进行操作,例如输入ENQUEUE 100,表示把元素100插入队列。1、 ENQUEUE,表示当有新的元素进入队列,首先会检索是否有同一组的元素已经存在,如果有,则新元素排在同组的最后,如果没有则插入队列末尾。组队列是队列结构中一种常见的队列结构,在很多地方有着广泛应用。组队列是是指队列内的元素分组聚集在一起。第1行输入一个t(t<=10),表示1个队列中有多少个组。第2行输入一个第1组的元素个数和数值。
2024-10-11 16:29:24
278
原创 DS队列之银行排队
银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。6.获取队头元素: itemp = myQe.front();// 把队头元素放入itemp中,注意本操作不弹出元素。7.判断队列是否为空:myQe.empty();//把队头元素弹出队列,注意本操作不获取队头元素。4.入队操作:myQe.push(itemp);3.定义一个整数队列对象数组:queue<int> myQA[10];2.定义一个整数队列对象:queue<int> myQe;
2024-10-11 16:28:40
240
原创 DS栈—波兰式,逆波兰式
求波兰式,需要操作数栈(注意不是计算结果入栈,有计算式入栈),运算符栈。栈顶运算符优先级>新读入运算符优先级出栈,教材第三章表3.1中的相同运算符优先级>(从左往右计算)改为
2024-09-24 15:23:09
1179
原创 DS堆栈--迷宫求解
如果迷宫存在路径,将路径中每个方格的x和y坐标输出,从起点到终点,每输出四个方格就换行,最终以单词END结尾,具体格式参考示范数据。给出一个N*N的迷宫矩阵示意图,从起点[0,0](也可能是[1,1])出发,寻找路径到达终点[N-1, N-1]第三行起,输入迷宫每一行的每个方格的状态,0表示可通过,1表示不可通过。如果迷宫不存在路径,则输出no path并回车。第二行输入n,表示第一个迷宫有n行n列。第一行输入t,表示有t个迷宫。以此类推输入下一个迷宫。
2024-09-23 16:16:34
497
原创 DS堆栈--括号匹配
从上例可以看出第1和第2个括号匹配,第3和第10个括号匹配,4和5匹配,6和9匹配,7和8匹配,11和12匹配。处理表达式过程中需要对括号匹配进行检验,括号匹配包括三种:“(”和“)”,“[”和“]”,“{”和“}”。接下来的t行的每行输入一个表达式,表达式只考虑英文半角状态输入,无需考虑中文全角输入。随后如果连续接收到左括号,则不断进堆栈。2、 当接受第1个右括号,则和最新进栈的左括号进行匹配,表示嵌套中1组括号已经匹配消除。对于每一行的表达式,检查括号是否匹配,匹配则输入ok,不匹配则输出error。
2024-09-23 14:28:32
583
原创 DS堆栈--行编辑
使用C++的STL堆栈对象,编写程序实现行编辑功能。行编辑功能是:当输入#字符,则执行退格操作;如果无字符可退就不操作,不会报错。每行输出最终处理后的结果,如果一行输入的字符串经过处理后没有字符输出,则直接输出NULL。本程序默认不会显示#字符,所以连续输入多个#表示连续执行多次退格操作。注意:必须使用堆栈实现,而且结果必须是正序输出。第一行输入一个整数t,表示有t行字符串要输入。每输入一行字符打回车则表示字符串结束。第二行起输入一行字符串,共输入t行。
2024-09-23 14:13:59
179
原创 DS堆栈--逆序输出(不使用STL栈)
输入一个字符串,按字符按输入顺序压入堆栈,然后根据堆栈后进先出的特点,做逆序输出。请编写堆栈操作的具体实现代码,实现字符串的逆序输出,需自行实现堆栈。len = str.length() //获取输入字符串的长度。//把输入的字符串保存在变量str中。第二起,每一行输入一个字符串,注意字符串不要包含空格。第一行输入t,表示有t个测试实例。每行逆序输出每一个字符串。
2024-09-22 21:12:23
449
原创 前驱后继--双向链表(线性结构)
对给定的每个关键字,输出此关键字前驱节点关键字和后继节点关键字。如果给定的关键字没有前驱或者后继,则不输出。给定关键字为每个输出占一行。对于给定的一列数据,按照给定的顺序建立双向链表,按照关键字找到相应节点,输出此节点的前驱节点关键字及后继节点关键字。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。(数据保证关键字在数列中没有重复)。个要查找的关键字,每个占一行。(代表要找的关键字的个数)。有一个指针指向了后继节点。又有一个指向前驱节点。
2024-09-22 21:00:29
336
原创 DS单链表--结点交换
swap (ListNode * p, ListNode * q) //p和q表示指向两个结点的指针。swap(int pa, int pb) //pa和pb表示两个结点在单链表的位置序号。注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换。用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置。
2024-09-21 21:50:36
376
原创 DS链表—学生宿舍管理
分析题目#class nodepublic:int room;node* next;name = "";int len;int l = 20;p1 = q;a++;int x = n;int room;r = q;!!!!!!!!!!!!!!\n";cout
2024-09-21 20:40:15
337
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人