- 博客(19)
- 收藏
- 关注
原创 用QT+C++制作简单加减乘除计算器
只有简单的加减乘除功能,界面分布如下。这个是MainWindow.cpp。这个是MainWindow.h。这是main.cpp。
2024-08-30 10:48:11 296
原创 【leetcode142环形链表Ⅱ】
从head开始到入环结点要走a +nb,slow已经走了nb,那么slow再走a步就能到入环点。让fast回到head开始和slow重新走,相遇时刚好是a步。首先,快指针速度2,满指针速度1,lenf=2 lens。(a是从head到入环点的距离,b是环一圈的长度)其次,相遇时,lenf=lens+nb。怎么让slow刚好走a步呢 ❓。由以上两式可得,s=nb。
2024-08-14 22:19:02 176
原创 复写快速排序——c语言
以前写过快排,都是用了两个函数嵌套,可读性也很差一直想整理的更有逻辑、可读性更强一点,但是刚找到时间。快排本身逻辑很简单,就是边界很容易把自己写忘记啥是啥。从小到大排序从后往前走,一直循环,比基准大的就–过去,直到找到比基准小的放前面然后再从前往后走,一直循环,遇见比基准小的就++过去,直到找到比基准大的,移到后面。
2024-06-16 20:48:11 205
原创 冒泡排序的小优化———C语言
没什么用的小优化。冒泡排序一共要排序n-1趟,但是如果在某一趟排序中没有发生元素交换说明所有元素都是有序的了没有必要再进行下一次排序可以设置一个flag标记此次排序是否发生元素交换如果发生元素交换,就继续循环进行下一趟冒泡如果没有发生元素交换,就break出来。
2024-06-15 16:27:04 194
原创 选择、冒泡、插入排序——C语言实现
这三个放一起了,都不是很长选择排序:每次把待排数组中最小元素选到待排数组之前(待排数组之前的第一个元素就像是:临时最小元素暂存位置一样)冒泡排序:进行n-1趟,每趟两两比较把最大元素冒到最后,下一趟就不用带上这个元素了。插入排序:前面排好的元素看作一个有序数组(下标0 ~ i-1),每次从未排序部分拿一个新元素(下标i),比新元素小的就后移,遇到小于等于新元素的就break找到位置,最后在合适的位置插入新元素。下一趟再从未排序部分拿一个新元素,重复。
2024-05-31 21:11:19 253
原创 利用哈希表判断单链表有环——C语言
10//创建链表结点,但是不创建链表结构体,改变头指针时需要用二级指针int data;}Node;//键值对结点//表结构体//哈希桶//哈希函数需要的种子值}HashMap;//尾插法//创建//插入//销毁//利用哈希表判断有无环#endif //!HASH_MAP_H可以在遍历链表的过程中,将链表的每一个结点存入哈希表,若发现有重复结点被存入哈希表,则确定单链表有环。
2024-05-29 23:59:39 295
原创 链式栈基础上实现括号的匹配校验——C语言
/括号匹配exit(1);= *p) {p++;return ret;实现逻辑为:1、遍历,遇见左括号,就将对应的右括号入栈2、遇见右括号时。如果栈为空或栈顶元素与这个遇见的右括号不一致,则匹配失败。如果栈顶元素即为此右括号,匹配成功,继续遍历,直到遍历完。
2024-05-29 23:24:21 225
原创 实现动态栈的基本操作——C语言
10//指向动态数组首元素的指针int size;//创建//入栈// 访问栈顶元素// 判空//打印// 销毁动态数组栈#endif//!这个不难,栈满时可以扩容,参见动态数组队列。
2024-05-29 23:16:32 199
原创 实现链式队列的基本操作——C语言
/ 定义队列中的元素类型// 队列节点的结构// 队列的结构// 队头结点指针// 队尾结点指针// 函数声明// 创建链式队列// 销毁链式队列// 入队列// 出队列并返回队头元素// 访问队头元素// 判空#endif //!链式队列显然不具有满的概念,所以也不需要执行判满操作。
2024-05-29 23:05:26 362
原创 C语言——基于拉链法实现的固定长度哈希表
请手动实现一个固定长度,基于拉链法的哈希表。包含创建、销毁、插入、删除、查找等基本操作。哈希表是一种“数组+链表”的结构。键值对:键、值、next指针。哈希表结构体:哈希桶和种子值。
2024-05-29 17:45:38 301
原创 实现链式栈的基本操作——C语言
/栈的结点栈帧//创建链式栈//入栈//出栈//判空//访问栈顶元素// 销毁链式栈#endif //!基本操作并不难,注意操作时的判空即可。销毁时先销毁栈帧最后销毁结构体。
2024-05-28 20:18:13 399
原创 递归解决十进制转换二进制——C语言
十进制转换成二进制给定任意一个非负十进制整数,请利用递归的方式,求解它的二进制表示方式基本的思路是:把该整数除以2得到余数,然后倒着输出余数。倒着输出余数,将递归函数体放在取余之前,先递归再回溯打印。如果取余放在递归函数体前,就会逐层打印。输出就是正序的。
2024-05-20 14:14:45 681
原创 随机发牌——C语言
现在有一副扑克牌,去掉大小王。请你写一个随机发牌程序,由用户指定发几张票,然后打印用户得到的手牌。注:扑克牌的花色(suit)有四种:梅花(Club)、方块(Diamond)、红心(Heart)、黑桃(Spade)扑克牌的点数(point)有13种,2~10,J,Q,K,A程序的核心是随机生成手牌,需要随机数1、srand(time(NULL))初始化随机数2、用一个二维数组标记牌是否已经打印,避免重复打印。
2024-05-20 10:42:03 708
原创 递归求汉诺塔移动次数和斐波那契函数——C语言
汉诺塔问题:1)将前n-1个圆盘从塔1移动到塔2,需塔3作为辅助。这一步就是把N-1个盘子从一个塔移到另一个塔,共需要f(N-1)步。2)将最大的1个盘子,从塔1移动到塔3。共需要1步完成。3)再将将前n-1个圆盘从塔2移动到塔3。这一步就是把N-1个盘子从一个塔移到另一个塔,共需要f(N-1)步。斐波那契问题:斐波那契数列的特点是,每一个数字是前两个数字的和。所以如果你想得到F(n),你其实只需要知道F(n-1)和F(n-2)。
2024-05-19 20:45:02 367
原创 判断是否是素数和幂运算——c语言
设一个flag标记,看n除从2到自身的开方(开放函数用sqrt()),是否能除开,如果能除开,置flag为false。主要在于处理幂指数是负数的情况。我直接简单粗暴的取了绝对值。在返回值时再对幂指数为负的情况做处理。
2024-05-19 17:40:02 301
原创 24/5/17 递归与非递归实现二分查找
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。总结:二分查找主要是在有序数组中查找目标值并返回下标。核心思想:1、获取中间值。2、用目标值与中间值比较,确定目标值在左区间还是右区间。3、重复第二步直到找到目标值。
2024-05-17 22:39:47 612
原创 24/5/15 C语言日历打印
在现在实现的打印日历前,设置了判断闰年,计算从1970/1/1至输入的日期的总天数,对应月总天数,判断输入日期几这几个函数。总结:在完成需求时,不应该把内容都写在main里,而应该分成几个函数来写。后续添加和调整实现功能会更灵活。
2024-05-15 21:33:26 543
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人