- 博客(43)
- 收藏
- 关注
原创 树与二叉树的奥秘全解析
本文系统介绍了树与二叉树的相关概念、性质与操作。主要内容包括:树的定义与基本术语(结点、度、层次等)及其性质;二叉树的定义、基本形态和性质(如结点与层数关系);二叉树的存储结构(顺序/链式)和遍历方法(前序/中序/后序);特殊二叉树(满二叉树、完全二叉树、线索二叉树)的特性;哈夫曼树的构造方法与编码应用;以及树、森林与二叉树之间的相互转换方法。文中通过性质定理、示例和真题解析,全面阐述了这些数据结构的核心知识点与应用场景。
2025-10-24 22:29:59
1214
原创 队列数据结构详解:从原理到实现
本文介绍了队列(FIFO线性表)的顺序和链式实现。顺序队列包括静态数组和动态内存分配两种方式,重点解决了假溢出问题,并提供了循环队列实现。链式队列则通过链表节点实现动态存储。每种实现都包含初始化、入队、出队、判空和获取队头等基本操作,并附有完整可运行代码示例。文章详细比较了不同实现方式的特点,为数据结构中队列的实现提供了完整参考方案。
2025-10-14 21:15:00
318
原创 深入浅出:栈的原理与实现
文章详细讲解了栈的两种实现方式:顺序存储结构(使用数组)和链式存储结构(使用链表)。对于每种实现方式,都给出了初始化、判空、入栈、出栈和获取栈顶元素等基本操作的代码实现,并提供了完整的可执行代码示例。
2025-10-14 20:30:00
701
原创 算法时间复杂度解析与实战(c语言版)
本文详细描述了如何计算时间复杂度,以及时间复杂度的常量阶、线性阶、平方阶、立方阶和对数阶的示例,最后列举了近几年考到的相关题目
2025-09-22 08:30:00
363
原创 Java基础学习5(流程控制语句2)
超超超详细流程控制语法梳理(下),内含循环语句(for循环、while循环和do-while循环)的基本语法、应用举例和练习~以及三种循环结构的对比,关键字break和continue的使用,如何使用scanner实现键盘输入功能,如何获取一个随机数等知识点~
2025-08-18 21:06:43
1073
原创 Java基础学习4(流程控制语句1)
超超超详细流程控制语法梳理(上),内含分支语句(if-else条件判断结构和switch-case选择结构)的基本语法、应用举例和各自特点说明加练习~
2025-08-18 20:49:30
722
原创 Java基础学习3(变量与运算符2)
本篇文章讲述了进制与各种运算符的详细知识点、易错点与案例(之前在c语言模块涉及过,各位可以当巩固基础知识看看)
2025-08-15 20:16:33
833
原创 c语言强基练(指针专题)
【问题描述】拆分实数的整数和小数部分:要求自定义一个函数void splitfloat(float x,int *intpart,flaot *fracpart)。其中x是要被拆分的实数,intpart和fracpart分别是将实数拆分出来的整数和小数部分。通过定义的主函数,编写对应的splitflaot函数内容。【样例输入】```12.4567```【样例输出】``````
2025-06-03 20:57:09
350
原创 c语言强基练(函数专题)
【问题描述】输入2个正整数a和n,求a+aa+aaa+aa...a(n个a)之和。例如,输入2和3,输出246(2+22+222)。【输入形式】从键盘输入正整数a和正整数n。[输入输出样例1]】(下划线部分表示输入)> ```> 8 5> ```> ```> s=98760> ```【样例说明】输入提示符后要加一个空格。其中":"后要加一个且只能一个空格。输出语句的"="两边无空格。英文字母区分大小写。必须严格按样例输入输出。
2025-05-29 17:10:52
1060
原创 揭秘时间计算中的模运算技巧
内含为什么可以使用 (total_mins % 1440 + 1440) % 1440来保证时间在同一天的合法范围内,并通过PTA 7-2 ”然后是几点“ 问题让读者理解得更透彻
2025-05-22 19:50:41
1517
原创 C语言代码实战(数组专题)
strcmp函数的比较规则是按照字典序进行比较,即逐个字符比较。使用该函数需要包含头文件 #include<string.h>比较函数,用于比较两个字符串的大小。strcmp函数是C语言中的。
2025-05-18 23:59:18
288
原创 浮点数截断法:四舍五入的精确模拟
假设,我们想四舍五入到(即3.14或3.15a * 100a+ 0.5(int)int/ 100.03.145%.2f。
2025-05-16 21:18:01
586
原创 C语言刷题1
解法思路:整数中,能被2整除的数是偶数,不能被2整除的数是奇数,奇数的个位为1,3,5,7,9。对于1~100之间的奇数,我们可以进行如下操作:1. 利用循环语句 for 从1开始迭代到100;2. 使用条件语句 if 来检查每个数字是否为奇数(即除以 2 余数不为 0 );3. 如果数字是奇数,则我们使⽤ printf 函数将其打印到控制台上,并在数字之间添加⼀个空格;4. 最后,我们在 main 函数中返回 0 ,表示程序已成功执行。
2025-04-23 20:13:29
105
原创 蓝桥杯备赛(搜索)
回溯法一般使用DFS(深度优先搜索)实现,DFS是一种遍历或搜索图、树或图像等数据结构的算法,当然这个图、树未必要存储下来(隐式处理就是回溯法),常见的是,搜索树一般是(总节点个数一般为n!级别)和(总节点个数一般为2^n级别)。排列型就是,子集型就是对于每一个元素(结果与顺序无关)。DFS从起始节点开始,沿着一条路径,直到无法继续为止,然后回溯到前一个节点,继续探索其他路径,直到遍历完整个图或树。DFS使用栈或递归来管理节点的遍历顺序,一般使用。很多时候DFS和回溯法。
2025-03-20 00:32:57
2076
原创 蓝桥杯备赛(基础语法4)
冒泡排序的思想是每次将最大的一下一下运到最右边,然后将最右边这个确定下来。再来确定第二大的,再确定第三大的...对于数组 a [ ] ,具体的来说,每次确定操作就是从左往右扫描,如果 a [ i ] > a [ i + 1] ,我们就执行swap ( a [ i ] , a [ i + 1 ] ) 将两项交换,然后再往右检查,这样可以找出最大的并将其丢到最右边。第一次确定操作是将a [ 1 ] ~ a [ n ] 中最大的放到 a [ n ];
2025-03-18 23:45:00
2334
原创 蓝桥杯备赛(基础语法3)
指的是两个指针leftright(简写为 l , r )分别指向序列第一个元素和最后一个元素。然后 l 指针不断递增,r不断递减,直到两个指针的值相撞或错开(即1>=r),或者满足其他要求的特殊条件为止。对撞指针一般用来解决有序数组或者字符串问题(常见于区间问题):查找有序数组中满足某些约束条件的一组元素问题:比如二分查找数字之和等问题。反转字符串回文数颠倒二进制等问题。快慢指针一般比对撞指针更难想,也更难写。指的是两个指针从同一侧开始遍历序列,且移动的步长一个快一个慢。
2025-03-16 23:52:16
908
原创 蓝桥杯备赛(基础语法2)
prefix表示前缀和,前缀和由一个用户输入的数组生成但是注意,prefix是一种预处理算法,只适用于a数组为静态数组的情况,即a数组中的元素在区间和查询过程中不会进行修改。如果需要实现“先区间修改,再区间查询” 可以使用差分数组,如果需要 “ 一边修改,一边查询 ” 需要使用树状数组或线段树等数据结构。
2025-03-15 00:08:13
591
原创 蓝桥杯备赛(基础语法1)
1)时间复杂度是衡量算法执行时间随输入规模增长的增长率。2)通过分析算法中基本操作的执行次数来确定时间复杂度。3)常见的时间复杂度包括 : 常数时间O(1)、线性时间O(n)、对数时间O(log n)、平方时间O(n^2)等。4)在计算的时候我们,并不要求严格的表达式。一般我们关注的是最坏时间复杂度,用O(f(n)表示,大多数时候我们仅需估算即可。一般来说,评测机1秒大约可以跑2e8次运算,我们要尽可能地让我们的程序运算规模数量级控制在1e8以内。
2025-03-12 23:31:27
986
原创 蓝桥杯备赛(语言基础3)
在C++中,vector是一个动态数组容器,可以存储一系列相同类型的元素。它是标准库<vector>中定义的模板类。模板类声明:vector是一个模板类,因此在使用之前需要包含头文件<vector>。这里的T是要存储在vector中的元素类型。容器大小:vector是一个动态数组,可以根据需要自动调整大小。它会根据元素的数量动态分配内存空间。元素访问:可以通过索引来访问vector中的元素。索引从0开始,最后一个元素的索引是size()-1。可以使用[ ]运算符或at()函数来访问元素。
2025-03-08 23:55:14
1046
原创 蓝桥杯备赛(语言基础2)
二分法是一种高效的查找方法,它通过将问题的搜(两边具有明显的区别),迭代地缩小搜索范围,直到找到目标或确定目标不存在。二分法适用于,并且每次迭代可以将搜索范围。二分法本质上也是,但和暴力枚举不同,二分法利用数据结构的减少了很多不必要的枚举,从而极大地提高了效率,一般可以将O(n)的枚举优化到O(logn)。常见的二分类型有:1)整数二分2)浮点二分3)二分答案(最常见)二分法简介-解题步骤1.研究并发现数据结构(或答案变量)的单调性。
2025-03-05 20:00:19
776
原创 蓝桥杯备赛(语言基础1)
string是C++标准库的重要组成部分,主要用于字符串处理。使用string库需要在头文件中包括该库#include<string>string与char[]不同,string实现了高度的封装,可以很方便地完成各种字符串的操作,比如拼接、截取、匹配等等。1)字符串管理:string封装了字符串的存储和管理。它自动处理字符串的内存分配和释放,避免了手动管理内存的麻烦。2)动态大小调整:string可以根据需要自动调整字符串的大小。
2025-02-28 23:15:57
811
原创 C语言学习笔记7
• 算术操作符: + 、- 、* 、/ 、%• 移位操作符: << >>• 位操作符: & | ^• 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=• 单目操作符:!、++、--、&、*、+、-、~ 、sizeof、(类型)• 关系操作符: > 、>= 、< 、<= 、 == 、!• 逻辑操作符: && 、||• 条件操作符:?• 逗号表达式: ,• 下标引用: []• 函数调用: ()
2025-02-20 00:28:12
743
原创 C语言学习笔记6
ret_type fun_name(形式参数)•ret_type 是函数返回类型,有时候返回类型可以是 void ,表示什么都不返回•fun_name 是函数名•括号中放的是形式参数,函数的参数也可以是 void ,明确表示函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。•{}括起来的是函数体,函数体就是完成计算的过程。
2025-02-08 23:20:22
1113
原创 c语言学习笔记5
数组是⼀组相同类型元素的集合重点:• 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。• 数组中存放的多个数据,类型是相同的。
2025-01-23 18:15:19
917
原创 猜数字游戏
游戏要求1. 电脑自动生成1~100的随机数2. 玩家猜数字,猜数字的过程中,根据猜测数据的大小给出了大了或小了了的反馈,直到猜对,游戏结束。
2025-01-21 20:07:23
472
原创 C语言学习笔记4
|就是或运算符,也就是或者的意思,||也是⼀个双⽬操作符,使⽤的⽅式是a||b,||两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。&&就是与运算符,也是并且的意思,&&是⼀个双⽬操作符,使⽤的⽅式是a&&b,&&两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。例子:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。
2025-01-17 23:36:14
2131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅