- 博客(21)
- 收藏
- 关注
原创 直接插入排序
插入排序的思想是:将待排序序列分成两个序列,前面的序列保持有序,依次选取后面的序列的元素,在前面的序列中进行插入。初始时,有序序列的长度为1。//// Created by Vissan on 2022/5/9.//#include<stdio.h>/** * 直接插入排序 * @param nums * @param len */void insertSort(int *nums, int len) { int temp; int j; f.
2022-05-09 10:54:14
319
原创 328. 奇偶链表
给定单链表的头节点 head,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。 你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。/** * 相当于维护了两个链表,一个偶数链表和一个奇数链表,让两个奇偶指针分别遍历,最后在将偶链表的头结点接到奇链表后 */struct ListNode* oddEven.
2022-05-06 22:22:22
334
原创 线索二叉树的先序和中序创建
在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。传统的二叉树由于只有指向左右孩子结点的指针,因此如果在某个业务中需要频繁的使用其前驱结点,因此这种情况下就会非常的不方便,只能采用从头遍历的笨办法,因此采用线索化的方法,通过将前后驱结点利用线索化的方法串联起来,会使得我们处理这些问题变得更加的方便。using namespace std;#define ElemType inttyped.
2022-05-03 10:15:25
218
原创 链队的实现
采用链式存储结构的队列。可以理解为特殊的单链表,只允许在一端插入,另一端删除在这里插入代码片#include <iostream>using namespace std;#define ElemType inttypedef struct LinkNode { ElemType data; struct LinkNode *next;} LinkNode;typedef struct { LinkNode *front, *rear; in.
2022-04-22 18:39:02
1279
原创 循环队列的实现
概念循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。 循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环
2022-04-22 18:36:23
714
原创 删除顺序表中值所有值为x的元素
要求:删除一个顺序表中值为x的元素,时间复杂度为O(n),空间复杂度为O(1)本体来自王道2023数据结构中顺序表解答题中的第3题,需要在空间复杂度和时间复杂度上符合要求,因此很难使用常规的删除操作,顺序表的删除一般时间复杂度为O(n),最坏的情况下遍历一次加删除n个元素,时间复杂度为O(n^2),显然是不合适的,而且要存储多个数组下标也不符合空间复杂度O(1)的要求,因此我们只有采用别的办法。bool del_all_x(sqList &L, int x) { if (L.leng
2022-04-22 18:29:44
2104
1
原创 顺序表的反转
实现一个高效算法,将顺序表L的所有元素逆置,要求空间复杂度为O(1)本题来自王道数据结构2023顺序表中的综合应用题的第三题,题中要求反转一个顺序表,并要求空间复杂度为O(1)分析:由于有空间复杂度的约束,所以我们不能简单的重现new一个链表,然后使用头插法去创建。因此为了解决问题很自然想到了双指针,通过前后对比来轻松实现顺序表的反转//定义一个顺序表typedef struct { ElementType *elem; int length;} sqList;bool
2022-04-22 18:21:25
752
原创 栈的链式储存
在上一篇我们学习了顺序栈的实现,但是大家要思考一个问题,就是顺序栈在初始化的时候会申请一大片连续的内存空间,这样在输入较少的情况下会造成大量的内存空间的浪费。那么要怎么解决这个问题呢?1、在沿着顺序栈的思路上我们可以取用共享栈的方法,让两个栈共享一片内存空间,这个时候我们在初始化的时候只需要定义两个栈顶指针top和bottom,分别让其指向设定容量的底部和顶部,比如我们设定MaxSize=100,那么我们就可以让Top初始化为-1,bottom初始化为100,在进行相关的操作即可。注意此时栈满的条件为 .
2022-04-21 11:35:33
1244
原创 顺序栈的实现
1、栈的定义栈是只允许在一端进行操作的线性表。2、栈的特性后进先出(LIFO)3、名词解释栈顶(Top):线性表允许进行插入删除的一端栈底(bottom):固定的,不允许进入删除和插入的一端空栈:不含任何元素的空表#include <iostream>using namespace std;#define ElemType int#define Maxsize 10typedef struct { ElemType data[Maxsize]; i.
2022-04-21 10:44:53
59
原创 单链表的实现
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。在本文中单链表都使用了头节点来简化操作,头指针head指向头结点。链表由头指针唯一确定,单链表可以用头指针的名字来命名。#include <iostream>using namespace std;#define ElemType int.
2022-04-19 21:19:44
750
原创 顺序表的实现
线性表的基本实现线性表的顺序存储又称为顺序表,顺序表的关键在于理解逻辑上相邻的元素在物理位置上也相邻。代码实现较为简单,但需要注意线性表中的位序是从1开始的,这点和数组下标从0开始有一定的区别,在进行删除和查找的操作时需要注意题目所给的条件,是位序还是数组下标。#include <iostream>#include <cstdlib>using namespace std;#define ElemType int#define InitSize 10typed
2022-04-18 11:24:16
106
原创 关于Unsatisfied dependency expressed through field ‘baseMapper‘;的解决方法
上次在使用mybatis-plus的代码生成器时遇到了这个问题,在网上查询很久无果,网上很多答案都是没有使用@Mapper注解,但是答主不仅仅加了此注解,而且在springboot的启动类中也加了@MapperScan注解,在多次查询后找到了原因。mybatis-plus的版本和对应代码生成器的版本不一致造成的,修改对应版本即可。错误截图这两版本要一致如果问题还没解决,需要去查看配置文件中的别名是否错误或没有写对应的注解...
2022-02-19 12:23:19
2038
1
原创 1014 福尔摩斯的约会 (20 分)
1014 福尔摩斯的约会 (20 分)输入3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm输出THU 14:04注意点:字符之间一一对应,不需要考虑顺序不同的情况import java.util.Scanner;public class Holmes { public static void main(String[] args) { Scanner s = new Scanner
2022-01-25 17:44:29
221
原创 1013 数素数 (20 分)
1013 数素数 (20 分)输入样例5 27输出样例11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103注意点:第10000个素数的大小为104729!//可以自己去验证public int getPrime(int n) { int count = 1; int ans = 0; int index = 2; while (coun
2022-01-25 15:48:14
592
原创 1005 继续(3n+1)猜想 (25 分)
1005 继续(3n+1)猜想 (25 分)输入样式63 5 6 7 8 11输出样式7 6分析:本题实在1001题的基础上更进了一步,需要我们去找到其中的关键数。思路是我们只需要将输入样式中的每一个数的卡拉兹猜想数都算出来,在将输入中重叠的数给剔除就可以了。因此我们很容易想到哈希表的处理操作,通过查询该猜想数是否在输入中,如果在就将次数删除,最后表中剩余的数就是我们所需要的答案import java.util.*;public class Main { publi
2022-01-19 18:00:52
585
原创 1004 成绩排名 (20 分)
1004 成绩排名 (20 分)输入样式3Joe Math990112 89Mike CS991301 100Mary EE990830 95输出样式Mike CS991301Joe Math990112分析:设置两个最大值和最小值,遍历一遍就可以了import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = ne
2022-01-19 17:51:21
161
原创 1003 我要通过 (20 分)
1003 我要通过! (20 分)输入10PATPAATAAPATAAAAPAATAAAAxPATxPTWhateverAPAAATAAAPTAPATTAA输出YESYESYESYESNONONONONONO分析:此题主要是找到规律,P和T都只能有一个,B必须存在且A*B=C。找到规律后设置标志位分别计算出A B C的个数即可import java.util.Scanner;/** * 找规律 a P b T c * a * b = c *
2022-01-19 17:47:50
166
原创 1010 一元多项式求导 (25 分)
1010 一元多项式求导 (25 分)输入数据:3 4 -5 2 6 1 -2 0输出数据:12 3 -10 1 6 0此题坑点:1、输入中可能会有多个空格,此时我们切割字符串的时候需要用到正则表达式去处理中间的多个空格2、指数为零的情况下,不会有输出3、零多项式要单独考虑输出,输出为:0 0public class Main { public int[] solution(int[] nums) { List<Integer> list = n
2022-01-19 17:39:03
413
原创 mybaits基本应用
Mybatis的一些基本增删改查操作mybatis是一个基于Java的持久层框架,可以帮助我们方便快捷的对数据库进行操作,那么下面我们就以一张基本的学生表来展开说明。操作步骤创建一张学生表DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_bi
2021-08-05 19:13:42
53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人