- 博客(31)
- 收藏
- 关注
原创 DAY32 图的连通性检测
(1)类的定位与核心数据结构(2)构造方法:初始化图的两种方式提供两种构造方法,满足不同场景下的图初始化需求:第一个构造方法:通过节点数量初始化;第二个构造方法:通过已有矩阵初始化(3)核心功能:判断图的连通性(4)辅助功能:对象字符串表示重写toString()方法,方便打印和调试时查看图的结构。(5)测试与程序入口单元测试:getConnectivityTest()方法测试 1:用无向图(邻接矩阵对称)验证连通性判断(预期返回true)。
2025-08-04 00:32:17
715
原创 DAY31 整数矩阵及其运算
本次代码通过IntMatrix类封装了二维整数矩阵的核心操作,思路如下:数据封装→基础操作(修改和获取元素、获取维度,toString返回字符串表示,getData返回内部数组引用)→矩阵运算(实现矩阵加法和乘法)→功能演示(main方法)证类的功能。二维数组中,data[0]表示第一行的数组,其length属性即为该行的元素个数,也就是矩阵的列数(假设矩阵是规则的,即每行的列数相同)。若当前矩阵的行数(data.length)与传入矩阵的行数(tempData.length)不相等,抛出异常。
2025-07-26 17:26:20
1098
原创 DAY28-30 Huffman 编码
NUM_CHARS作用:定义字符集大小(256 为 ASCII 范围)。说明:静态常量,用于初始化字符频率统计数组。/***/inputText作用:存储待编码的文本内容。说明:简化实现,使用字符串存储原始文本。/**作用:记录实际出现的不同字符数量(即叶子节点数)。说明:例如,若文本仅包含 a, b, c,则 alphabetLength = 3。/**alphabet作用:存储文本中实际出现的字符集合(即字符表)。
2025-07-16 17:08:09
1025
原创 DAY27 Hanoi 塔问题
Hanoi塔问题是一个经典的递归问题,也被称为汉诺塔问题。问题描述如下:有三根柱子A、B、C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,现在要把所有圆盘移动到C柱子上,移动过程中满足以下条件:每次只能移动一个圆盘。大圆盘不能放在小圆盘上面。Hanoi塔问题可以通过递归的方法来解决。递归的基本思想是将一个复杂的问题分解为若干个相对简单的子问题,然后逐个解决这些子问题,最终得到原问题的解。
2025-01-27 02:12:20
293
原创 DAY26 二叉树深度遍历的栈实现 (前序和后序)
二叉树的先序遍历,与上一小节中序遍历类似,但是在当前节点不为空时,先弹栈出根节点,再遍历左右子树。遍历结束后,辅助栈中的顺序是根-右-左(即反向的后序遍历顺序)。通过依次弹出辅助栈中的元素并输出,最终得到正确的后序遍历结果。当前节点为空,从主栈中弹出一个节点。当 tempNode 不为空时。将当前节点的值压入辅助栈。将指针移动到右子节点。将指针移动到左子节点。
2025-01-24 00:13:16
464
原创 DAY25 二叉树深度遍历的栈实现 (中序)
*访问当前节点并处理右子树:**如果当前节点为空(tempNode == null),说明左子树已经访问完毕,需要回溯。弹出栈顶节点(tempNode = (BinaryCharTree) tempStack.pop()),访问该节点(打印节点值)。= null),将当前节点压入栈(tempStack.push(tempNode)),然后移动到左子节点(tempNode = tempNode.leftChild)。如果 depth(栈的当前深度)为 0,表示栈中没有元素,返回 true。
2025-01-23 01:00:13
506
原创 DAY24 二叉树的建立
循环遍历paraIndicesArray的长度,为每个节点创建一个BinaryCharTree实例,并将paraDataArray中对应的字符作为节点数据。将根节点的右子节点(tempAllNodes[0].rightChild)赋值给当前对象的rightChild属性。将根节点的左子节点(tempAllNodes[0].leftChild)赋值给当前对象的leftChild属性。将根节点的值(tempAllNodes[0].value)赋值给当前对象的value属性。使用对象队列进行转换。
2025-01-22 01:29:22
833
原创 DAY23 使用具有通用性的队列
检查tempTree的左子节点是否为空,如果tempTree的左子节点不为null,则将左子节点加入到tempQueue队列中。这里使用了Integer.valueOf方法来获取一个值为0的Integer对象,而不是直接使用基本数据类型int,可能是因为队列中需要存储的是对象。((Integer)tempIntQueue.dequeue())是一个类型转换操作,将从队列中取出的对象转换为Integer类型。创建了一个名为tempQueue的CircleObjectQueue对象,即一个循环对象队列。
2025-01-17 15:58:54
795
原创 DAY22 二叉树的存储
tempIntQueue.enqueue(tempIndex * 2 + 2):这是将右子树的索入队的操作。tempIntQueue.enqueue(tempIndex * 2 + 1):将左子树的索引入队。while循环遍历二叉树,将当前节点的值和索引分别存储到valuesArray和indicesArray中,并将计数器i加1。创建一个长度为tempLength的整数数组,并将这个数组赋值给indicesArray变量。二叉树的构建、遍历、深度计算、节点数计算以及将二叉树的数据转换为数组。
2025-01-16 20:15:06
475
原创 【复习小结】14-21
从 tempStack 中弹出栈顶元素,并将其存储到 tempPopedChar 变量中。——遇到左括号 (、[ 或 {,则将其压入 tempStack 栈中。队满:(tail + 1) % TOTAL_SPACE == head。当执行压栈操作时,新元素被放置在栈顶,现有元素向下移动一位。switch语句根据 tempChar 的值执行不同的操作。当执行弹栈操作时,栈顶元素被移除,现有元素向上移动一位。如果不匹配,则返回 false,表示括号不匹配。DAY21 二叉树的深度遍历的递归实现。
2025-01-12 23:04:24
224
1
原创 【复习小结】1-13
defalut处理:如果tempDigitalLevel的值不在预期范围0到10之内(例如负数或其他意外值),就会进入defalut,返回值为’E’,表示错误状态。矩阵乘法计算:这一行将第一矩阵的第i行和第二矩阵的第j列对应元素相乘并累加到结果矩阵的resultMatrix[i][j]中。布尔类型是一种数据类型,用于表示逻辑值的简单类型,它的值只能是真(true)或假(false)这两个值中的一个。顺序表删除:从被删除元素开始一直循环遍历到倒数第二个元素,将后面的元素向前移动。DAY6 基本for语句。
2025-01-12 22:23:57
399
1
原创 DAY21 二叉树的深度遍历的递归实现
char value;存储节点中的字符值。每个节点可以包含一个字符。左子节点,左子节点本身也是一个二叉树节点。如果当前节点没有左子节点,leftChild 会是 null。右子节点,右子节点也是一个 BinaryCharTree 类型。如果当前节点没有右子节点,rightChild 会是 null。/**/**/**
2024-10-29 22:24:07
700
原创 DAY20 小结
只需要给面向对象一个需要解决的问题的指令,不需要事无巨细精确到每一个解决过程。例如同样是插入元素,面向过程需要写明具体插入到哪里,面向对象则只需要给出需要插入的元素,而后面向对象自行检验队列是否已满,并考虑未满新元素具体的队列插入到哪里。②因为空出位置,在列表中插入删除元素方便,不需要移动其他元素,速度快效率高。优点:①元素储存不空出位置,所以空间复杂度更低,更节省空间不会浪费内存。缺点:队列空间有限,队列满时,下一个插入的元素会覆盖 head 指向的位置,导致数据丢失。优点:节省空间,空间复杂度低。
2024-10-27 23:32:06
296
原创 DAY19 字符串匹配
调用 tempFirstString 的 locate() 方法,查找 “ik” 在 “I like ik.” 中的起始位置,并将结果存储在 tempPosition 中。如果循环结束,还没有找到匹配的位置,则返回 -1,表示没有找到。调用 tempFirstString 的 locate() 方法,查找 “ki” 在 “I like ik.” 中的起始位置,并将结果存储在 tempPosition 中。输出 “ki” 在 “I like ik.” 中的起始位置,结果为 -1,表示没有找到 “ki”。
2024-10-26 00:28:13
609
原创 DAY18 循环队列
1.1定义一个公共静态常量 TOTAL_SPACE,表示队列的总空间。队列实际上只能使用 9 个空间,至少有一个空间留空,用于区分队列满和队列空的状态。1.2声明一个整数数组 data,用于存储队列中的元素;声明一个整数 head,表示队列的头部索引;声明一个整数 tail,表示队列的尾部索引。1.3构造函数。当创建 CircleIntQueue 对象时,会初始化 data 数组大小为 TOTAL_SPACE,并将 head 和 tail 都设置为 0。数据存储/***//***/
2024-10-23 20:51:42
948
原创 DAY17 链队列
Node什么意思?Node 是一个自定义类型,通常包含数据及指向其他节点(如下一个节点或子节点)的引用。int data;表示节点存储的数据。Node next;表示对下一个节点的引用。它是一个指向同一类(Node)的对象,这样可以实现节点之间的连接。将传入的 paraValue 赋值给当前节点的 data 成员。初始化节点的 next 引用为 null,表示当前节点还没有连接到下一个节点。/**/**/**
2024-10-21 00:04:54
687
1
原创 DAY16 递归
在 sumToN 函数中,每次递归调用都会将 paraN 递减 1,直到达到基线条件。因此,函数需要进行 N 次递归调用,才能得到最终结果。当 paraN 等于 1 时,函数将返回 1,并开始向上返回。数列从 0 和 1 开始,前几个数字为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …如果 paraN 小于等于 0,函数返回 0,因为斐波那契数列中没有负索引,并且索引 0 对应于第一个元素 0。如果 paraN 等于 1,函数返回 1,因为斐波那契数列中的第二个元素是 1。
2024-10-19 21:06:23
303
原创 DAY15 栈的应用(括号匹配)
故栈 tempStack 的最后一个元素是字符 #,用于标记栈是否为空。使用 paraString.charAt(i) 获取字符串 paraString 中索引为 i 的字符,并将其赋值给 tempChar 变量。这行代码检查弹出的元素是否等于字符 #。这行代码从栈 tempStack 中弹出一个元素,并将其赋值给变量 tempPopedChar。使用循环将字符 ‘a’ 到 ‘l’ 依次压入栈中,并在每次压入后打印当前栈的内容。使用循环将栈中的元素依次弹出,并在每次弹出后打印弹出的元素和当前栈的内容。
2024-10-17 22:12:26
992
原创 DAY14 栈
压栈 (Push)压栈操作是指将一个元素添加到栈的顶部。栈是一种后进先出 (LIFO) 数据结构,这意味着最后添加的元素将是第一个被移除的元素。当执行压栈操作时,新元素被放置在栈顶,现有元素向下移动一位。弹栈 (Pop)弹栈操作是指从栈顶移除并返回一个元素。当执行弹栈操作时,栈顶元素被移除,现有元素向上移动一位。后进: 最后添加的元素将是第一个被移除的元素。先出: 最早添加的元素将是最后一个被移除的元素。压栈和弹栈均只能在栈顶操作。
2024-10-15 22:41:12
1836
原创 DAY13 链表
在每次循环中,调用链表的 insert 方法,将整数 1 插入到索引为 0 的位置。通过将当前节点的 next 指向下一个节点的 next,实现对指定位置节点的删除。i++):循环 5 次,每次删除链表的头节点(索引为 0 的节点),并输出链表状态。创建一个 Node 类型的临时变量 tempNode,并将其初始化为链表的第一个有效节点(即头结点的下一个节点)。创建一个 Node 类型的临时变量 tempNode,并将其初始化为链表的第一个有效节点(即头结点的下一个节点)。删除指定位置的节点。
2024-10-12 02:21:53
716
原创 DAY12 顺序表(二)
否则,将插入位置后的元素向后移动,并将新的值插入指定位置,最后递增 length。data[i] = data[i-1]: 表示把当前最大的元素(data[i-1])移动到它后面的位置(data[i])。检查列表是否已满,如果是,打印提示信息 “List full.” 并返回 false,表示插入失败。方法的返回类型是布尔型,表示插入操作是否成功(布尔类型表示两个可能的值:true和 false)。使用for循环,这个循环从删除位置 paraPosition 开始,一直到列表的倒数第二个元素。
2024-10-11 20:04:02
775
原创 DAY11 顺序表(一)
构建字符串,这是一个 for 循环,从 data 数组中遍历元素( data 是一个存储数据的数组,length 是数据的个数)。由于在 Java 中,打印一个对象时会自动调用其 toString() 方法,因此这行代码实际上与前面一行是等效的。如果有元素,则将每个元素的值连成一个字符串,用逗号分隔。打印初始化后的列表:调用 tempFirstList 的 toString() 方法,以获取其字符串表示并打印出来。定义一个名为 MAX_LENGTH 的常量,表示列表的最大长度为 10。
2024-10-09 20:42:48
386
原创 DAY10 综合任务1(10.8)
continue和break的区别:continue结束当前循环的本次迭代,并立即跳转到下一轮循环的开始处继续执行循环,只是跳过了当前迭代中剩余的代码;当初始化的无效值没有被有效值替代,即 tempBestIndex == -1, tempBestIndex 还等于 -1时,输出没有最佳学生,所有学生均不及格。使用for循环加和每个学生的总分,当遇到某一门成绩低于及格线(data[i][j] < threshold)的学生,使用continue跳过本次循环后面的代码。2.1确定n个学生,m门课程。
2024-10-08 22:16:06
809
原创 DAY9 循环语句
先进行无限循环while (true),每次循环tempValue自增,tempSum加上tempValue的值,直到tempSum的值超过tempMax停止(break;while (true)是一种无限循环,它将一直执行循环体内的代码,直到遇到 break 语句或抛出异常。当满足tempSum<=tempMax条件的时候进行循环,每次循环tempValue自增,tempSum加上tempValue的值。tempMax:用于存储最大值的常量,表示累加值不能超过的限制,初始值为100。
2024-10-07 19:49:46
373
原创 DAY8 矩阵相乘
矩阵乘法计算:这一行将第一矩阵的第i行和第二矩阵的第j列对应元素相乘并累加到结果矩阵的resultMatrix[i][j]中。当第二个矩阵行数不等于第一个矩阵列数时不满足矩阵相乘条件,将打印一条消息,提示这两个矩阵无法进行乘法运算。内层循环:遍历第一矩阵的列和第二矩阵的行。首先令m存储第一个矩阵的行数,存储第一个矩阵的列数,存储第二个矩阵的列数。按照第二点循环部分的方法打印两个矩阵相乘的结果矩阵。外层循环:遍历结果矩阵的每一行。中层循环:遍历结果矩阵的每一列。以及第一个矩阵自身相乘的结果。
2024-10-06 22:44:40
584
原创 DAY7 矩阵元素相加
嵌套循环遍历矩阵,对于每个位置 (i, j),将paraMatrix1和paraMatrix2中对应位置的元素相加,并将结果存储在结果矩阵resultMatrix中。因此,对于一个矩阵paraMatrix,这个嵌套循环将会执行总共行数 * 列数次迭代,从而访问每一个元素。调用matrixElementSum(tempMatrix)方法,传入tempMatrix,以计算矩阵中所有元素的总和。并且返回矩阵元素的和。int[][] paraMatrix: 方法的参数,代表一个二维整型数组,通常用于表示矩阵。
2024-10-06 00:11:51
751
原创 DAY6 基本for语句
输出"1 add to " + tempN(这里是10) + " with step length " + tempStepLength(这里是1) + " is: " + addToNWithStepLength(tempN,tempStepLength)初始化变量 i 为1,条件为 i 小于或等于 paraN,每次循环 i 自增1,并将当前的 i 值加到 resultSum 中。循环将打印0,2,4,6,8。addToN:add to N,加到N,计算从1到给定整数N的所有整数之和。
2024-10-03 20:29:55
460
原创 DAY5 基本switch 语句
switch语句用于根据某个变量的值执行不同的代码块。这里在tempDigitalLevel的值决定接下来的执行路径,分别返回A、B、C、D、F(fail)五个等级。defalut处理:如果tempDigitalLevel的值不在预期范围0到10之内(例如负数或其他意外值),就会进入defalut,返回值为'E',表示错误状态。返回类型是char,会返回一个单一的字符值,不在预期情况下则返回E(error)根据不同tempScore值输出不同等级。2.switch语句。
2024-10-03 14:24:39
373
原创 DAY4 闰年的计算
表否定)打印 NOT ,然后无论是否满足上一条件均打印 is a leap year,即打印结果为"xxxx is NOT a leap year"或"xxxx is a leap year",即可区分。③如果年份可以被100整除(且之前已经被4整除),即整百年不能被400整除,则是非闰年,输出false。②如果年份可以被400整除,即整百年且能被400整除,则是闰年,输出true。④否则,如果年份可以被4整除(且不能被100整除),则是闰年,输出true。注:&&表示且,||表示或,!
2024-10-02 18:34:44
360
原创 DAY3 if基本语句
变量名完整写法tempNumber(为什么是tempNumber?temp用于表示“临时”或“过渡”数据,本身没有特殊意义)输出System.out.println,其中println用于用于打印信息并在打印后自动换行。String[] args: 一个参数,表示命令行参数。程序在运行时可以接收输入的多个字符串.abs:absolute缩写,意为绝对的,此处具体指绝对值(absolute value。逻辑与c语言相同,通过与0比较大小判断绝对值,其中比较大小通过if语句实现。viod:返回值,同c语言;
2024-10-01 22:49:06
268
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅