自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 排序(C语言实现)

排序的想法就是把原序列分为已经排好序的序列和未排好序的序列,旨在将未排序的序列中元素添加到排好序的序列中去。

2024-11-13 23:40:21 884

原创 利用栈实现中缀表达式的简单计算

即遵循如果operator栈顶元素运算符的优先级大于等于当前运算符的优先级,栈顶元素要出栈,进行运算,之后将当前运算符入栈,栈中肯定保持当前运算符的优先级大于下面所有运算符。上面考虑到的表达式错误很少,仅包含括号不匹配,表达式中有除加减乘除、左右括号和空格意外的其他字符,对于运算符相邻没有考虑到,比如。类,使用泛型,即在创建该类时传入数据类型,确定成员变量顺序数组的数据类型,写栈的基本方法:判满、判空、入栈、弹栈、返回栈顶元素。主要可以学习到的是熟练使用栈,以及了解栈在解题中的作用。

2024-11-12 21:46:48 797

原创 二叉搜索树

这种特殊的二叉树在查找和排序用的都是非常多的,所以上面两个名字都是可以的。

2024-11-11 11:35:12 297

原创 素数的判断与筛选

这个筛选方式不是特别快,不是线性时间,因为对于一个相同的数,比如18,会被2筛选出,也会被3筛选出,即对于一个数会被重复的判断是否为素数,那么如果我们可以让一个数只通过一次判断就可以知道是素数,那么就变成线性时间了,即O(n)的时间复杂度。主要思想就是保证每个合数只被筛选一次,如12,会被2,3,4,6,等都会筛选到,如果j等于i*i的话会被2,3重复筛到,所以这里用欧拉筛来改进这个方法。它的原理就是维护一个素数表,当遇到数i时,先判断是不是素数,是的话,加到素数表,然后让i。

2024-09-13 13:35:29 875

原创 哈夫曼编码与解码

/最长编码长度char data;//字符int freq;//频率}Huffman;//哈夫曼节点char* code;//编码}Huf_Node;//哈夫曼树根节点//字符频率表int size;//字符个数#endif。

2024-07-19 23:01:38 802

原创 学生信息管理系统---java

定义工具类时,它是一个抽象的概念,我们不需要去创建对象,而且也不能,此时我们就会使用private的构造器,不允许外界来调用它生成实列对象。这时我们就会使用static修饰的静态方法,静态方法是与类一起同时加载的,可以通过类名直接调用。思路:首先定义了两个JavaBean类Student和User类,来封装学生和用户属性以及成员变量的方法,接着就是根据需求一个一个实现方法,我们在测试类里面一般才会用到静态方法。收获与反思:在写代码量较大的小项目时,一定是写一个功能测试一个,保证代码的完整性和健壮性。

2024-04-01 12:31:35 225 1

原创 通讯录管理系统的实现

说实话我不理解我释放Phonebook->T指向的26个堆空间,为什么不行啊?奇怪的很,真的不理解呀!

2024-01-23 16:28:30 440

原创 统计数组中的元素

集合s包含从1到n的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合并且。给定一个数组nums代表了集合S发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。这个思路比直接自己写一个哈希表用来存储每个元素的信息更加方便,如果自己写哈希表存储nums[i]的信息,如果出现过,count++,最后找count=2的就是重复元素,而[1,n]不能找到的就是缺失元素。这样的话不需要排序,直接用哈希表存储元素,去重并记录出现次数。

2024-01-12 16:20:18 926 1

原创 使用C语言建立一棵二叉树,并实现先序遍历、删除、复制等操作

下面就是相关代码:因为二叉树的递归定义,因此我们也可以利用递归函数建立一棵二叉树,但是需要注意到的是,函数传递的参数,到底是传一级指针还是二级指针,看你要对它的操作而定。具体来说,如果你要修改指针的指向就要传二级指针,如果仅仅是遍历等操作,不对实参做操作,传一级指针就行。

2023-12-26 22:28:10 545 1

原创 Leetcode数组第二天

给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。向右轮转 1 步:向右轮转 2 步:向右轮转 3 步:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]这里我们要知道对数取模,轮换前下标i在轮换之后下标为i1,i1=(i+k) mod n法一:辅助空间法,即使用额外的数组。当前下标为i的元素,哎哟,直接看他的吧,不太好描述,作者:TsingPig。

2023-12-20 22:38:02 404 1

原创 Leetcode刷题基础--数组

(1)如果还满足nums[i+1]=nums[i-1],那么nums[i]=nums[i-1],可能有些人会想到nums[i+1]=nums[i]不是也行嘛,确实,但对于这个例子[-1,4,2,3]就不行,如果把2改成4,那么返回结果就是false,但实际只需要通过一次改动就可以实现。然后又想,使用分治的策略,举个例子nums[4]=[1,2,3,4],当只有一个元素时,不需要操作,也就是递归出口。

2023-12-18 21:01:43 978

原创 归并排序和快速排序

一般Partition算法的缺点就是当重复元素较多时,会导致分区不均匀,如果使用3-wayPartition算法,就能够减小子问题的规模,提高算法的效率。应用:1)快速排序,2)线性时间找第k小,3)求众数问题这里犯了一个错误,就是后置++和解引用符的优先级,*p++是先执行p++,再解引用,这时会导致p指针移向下一个位置,不是指向原来那个变量。不做过多解释。

2023-12-16 15:59:50 391 1

原创 将10进制转换为任意(2-16)进制,格式化解析字符串

EOF)中的sscanf函数返回EOF的原因有以下几种可能:字符串str已经被完全解析,没有更多的字段可以解析。在这种情况下,sscanf函数无法提取任何内容,返回EOF。str字符串为空或只包含空白字符(例如空格、制表符、换行符等),导致无法解析任何字段。此时,sscanf函数同样无法提取任何内容,返回EOF。在使用%s格式进行解析时,如果遇到字符串中的空格或制表符等分隔符,sscanf函数会停止解析,并返回已解析字段的数量。如果此时没有解析到任何字段,即没有读取到有效字符,也会返回EOF。

2023-12-15 15:28:34 346

原创 求最大公因数

当然,也可以自己去百度,有更详细的介绍,这里不再赘述。1、欧几里得算法 and 2、最大公因数的定义这里我们使用递归的算法,当然也可以使用递推的方法,那样更快。重点是自己把递归定义写出来就行。这里中要介绍的是素数筛选法。

2023-12-14 23:10:52 829 1

原创 分治,利用递归的方法

我们先将n-1个圆盘通过第三个柱子移动到第二个柱子上,再将最后一个圆盘移动到柱子三,再将n-1个柱子通过柱子一移动到柱子三,这样就实现了圆盘的移动。具体的说,就是将最大的那个圆盘移动到第三个柱子上,然后倒数第二大,倒数第三大......直到全部移动到第三个柱子上。这里分析一下,是否满足分治策略的条件:1)规模小到一定程度就可以很容易的解决,即第一个柱子上只有一个圆盘的时候。3)利用该问题分解出的子问题的解可以合并成这个问题的解,在递归过程中实现了子问题解的合并,因此也是可行的。

2023-12-14 22:41:21 354 1

原创 使用单链表实现稀疏多项式的加法

在这里试验是对的,也不知道还有什么bug。

2023-11-15 21:59:34 207 1

原创 动态创建一维数组、二维数组

我们知道二位数组名是一个二级指针常量,即行指针,二维数组在内存中是开辟了一块连续空间。定义一个二维数组,a是数组名,a[i]是一个列指针,可以引用a[i][0]到a[i][n-1]的元素。

2023-11-13 21:12:07 288

原创 今日做题之字符数组处理字符串和结构体投票

思路:用一个数组保存每个单词第一个字母的下标,并将最后一个字母后面的空格转换为'\0',这样就可以实现单词分离了。flag当作标志,因为我们只记录单词首字母的下标。

2023-11-09 21:45:15 67 1

原创 使用结构体来处理信息问题和用二分查找在有序数组中寻找元素并返回下标

用一维数组存储学号和成绩,然后,按成绩排序输出。输入格式输入第一行包括一个整数N(1<=N<=100),代表学生的个数。接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。输出按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。如果学生的成绩相同,则按照学号的大小进行从小到大排序。

2023-11-07 22:29:59 93

原创 C语言今日练题之综合利用循环

运行结果: 运行结果:思路:1、把第一组坐标当成横坐标最小的那个点,输入第一组数据,即minx,miny2、定义x,y用于输入剩下n-1组数据,用循环3、在循环里要实现以后输入的每组数据跟minx,miny作比较,即如果输入的xy,此时也应该将值赋给minx,miny代码实现: 执行结果:下面两种方法来实现:法二:当然两中方法的执行结果相同: 代码实现:执行结果: 所有的有两种方法的可以自行进行选择,今

2023-11-03 21:53:28 457 1

原创 选择排序和利用递归函数的特性将10进制转换为2进制

争取早点学会动态规划,我还是想快点把C语言基础内容学完,现在还差结构体、共用体,链表,位操作,多文件,有没有大神指点一下学习方法呀,我想学嵌入式,但是方向不是很明确。每日几道基础题,不要把手感丢了,排序方法已经学了两种,冒泡排序和选择排序。感觉现在学了的,都还不是很会用,特别是指针,还没有怎么用到。唉,leetcode上面的题又不会做,难受。

2023-11-02 21:19:53 63 1

原创 输入年月日,判断这是这年的第几天

【代码】输入年月日,判断这是这年的第几天。

2023-11-02 19:47:12 328

原创 C语言获得随机数

【代码】C语言获得随机数。

2023-11-02 12:55:50 205

原创 将两个无序数组合成一个有序数组

【代码】将两个无序数组合成一个有序数组。

2023-11-01 23:02:44 244

原创 C语言factorail函数递归

解释:main函数中调用test_fac(1)函数,并传递值1,进入循环体后,系统会为形参a开辟内存,同时有一个首地址,这里明显可以看出是000000DA0D98FAE0,由于a

2023-10-30 21:17:21 307

原创 将一个数组逆序输出

一个数组,有n个元素,我们定义两个数组下标,left=0,right=n-1,交换a[left]和a[right]即可实现数组逆序输出。仅个人看法,希望对你们有帮助!

2023-10-29 20:51:58 861

原创 冒泡排序C语言

对于一个有n个元素数组,我们要对其进行排序,原理是让数组从第一个元素开始,依次和后面的元素进行比较,如果前一个元素大于后一个元素,则实行交换,每进行一轮这样的排序,都会有一个最大的元素到数组的最后。比如:i=0时,内存循环一趟后,这n个元素中最大的那个元素就会排列在最后的位置,再进行下一次比较时,只需要比较剩下的n-1个元素,依次类推,直到剩下2个元素,比较最后一次,整个数组就实现了从小到大的升序排列。

2023-10-29 19:34:26 60

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除