![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C问题
文章平均质量分 53
明 日 香
快和我一起快乐学习
展开
-
经典OJ题:环形节点是否存在!
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回true。否则,返回false。原创 2023-11-07 23:20:30 · 90 阅读 · 10 评论 -
经典OJ题:单链表相交
也就是说,设立两个指针前,得出两个链表的长度,之后算出长度差,然后将较长的那个链表设置为long指针指向,然后long指针先再这个链表中走出对应的长度差后,和另一个指针short一起按照相同的速度朝前走,并且同时进行对比判断,当两个指针指向的空间地址一样时,那么返回指针,得出相交的节点。又假设,设立两个指针,分别指向两两个链表的节点,并且判断两个节点中的数据是否一样,如果一样,则找到了交点,但是链表中的数据并没有说明是不重复的,很容易出现错误,如下图所示。有两个链表A、B,返回链表A、B相交的节点。原创 2023-11-07 23:09:57 · 659 阅读 · 1 评论 -
经典OJ题:链表中的倒数第K个节点
转化为代码,就是先让fast走到和头节点相差距离为K的节点位置,然后fast和slow同时向前移动一个节点的距离位置,直到fast==NULL。所以利用这个K,进行一个距离差,也就是将fast和slow之间的距离变成K并且按照同样的速度向前运动,直到fast走到NULL。可以线统计链表的节点个数,然后用链表节点的个数减去K,得出倒数第K个节点的前一个节点到头节点的节点个数。之后使用循环遍历,遍历到倒数第K个节点的前一个节点,随后输出下一个节点。因为所求的是倒数第K个节点,所以这个节点到尾节点的距离是K。原创 2023-11-07 22:28:33 · 122 阅读 · 3 评论 -
经典OJ题:找环节点——代码解析
对于第一种:寻找节点中的数据是否一样来判断是否是环形,无非是判断节点内部的数据是否一致,但是这种判断方法过于的愚蠢,因为节点的数据是可以重复的,而且节点内的数据是不重复的!首先,我们要知道一点,如果fast走两步slow走一步,不论如何,fast都会比slow快一圈,而slow会比fast慢几步,因此我们可以得出结论,fast总是能和slow走到相同的节点位置,也就是二者总会相等的。返回链表开始入环的第一个节点:就是进入环型后的第一个节点,如下图示例1中的 数据为2的节点。返回链表开始入环的第一个节点。原创 2023-11-06 23:53:41 · 173 阅读 · 9 评论 -
删除有序数组中的重复项
nums原地使每个元素numsnumsknumsnumsknumsnumsnumsk26. 删除有序数组中的重复项 - 力扣(LeetCode)原创 2023-10-29 21:39:59 · 167 阅读 · 5 评论 -
打印整数二进制的奇数位和偶数位
因为要打印出32位的二进制数位,且分别打印出奇数位和偶数位,所以我们需要借助循环,循环中的变量需要跳过奇数/偶数位,所以循环中的变量每一次变动是2。因为&的特性,只有和1&在一起,得出的结果才是1,在借用>>进行移位操作,使得每一个奇数位/偶数位都能进行判断是1还是0。且因为二进制数位中的数字只有0和1组成,于是我们可以借用操作符的方式进行打印和操作。改题目的意思是将一个32位的二进制数位中的奇数位和偶数位上的数字分别打出。打印整数二进制的奇数位和偶数位。原创 2023-10-25 16:18:42 · 99 阅读 · 9 评论 -
C语言——9*9扫雷
main.c 进行主函数部分和调用部分以及游戏的逻辑部分play.c进行的是函数的实现部分game.h放置的是函数声明。原创 2023-08-01 20:08:12 · 104 阅读 · 0 评论 -
C语言 矩阵转置
而在C语言中,说到矩阵,我们第一时间想到的应该就二维数组的矩阵特性,所以,对于C语言的矩阵置换就是关于二维数组中行和列的置换。矩阵置换,矩阵置换的本质是长和宽的相互转化,举例,一个长3宽2的长方形,在进行矩阵置换后,变换成为了一个长2宽3的长方形。原创 2023-08-02 16:09:02 · 2179 阅读 · 1 评论 -
C语言 空心正方形
且我们画图得知,星号是只在四周,也就是在数组中,第0列 第0行 第n列 第n行 (n表示最后一个下标)。在C语言中,若要完成一个空心正方形,我们可以使用二维数组的矩阵特性,以此完成该图像。“空心正方形”顾名思义周围四边为星号,中间为空。原创 2023-08-02 16:22:58 · 1154 阅读 · 0 评论 -
C语言 X图案打印
我们把图中的图案放置在矩阵图中观察,我们会发现,放置星号的地方行和列是相同的,或者是放置星号地方的行和列加在一起,会等于总行数减一。C语言中的X图案需要使用二维数组进行解决。原创 2023-08-02 16:34:50 · 102 阅读 · 0 评论 -
C语言 合并两个升序的序列,形成一个新的升序序列
对于打擂台,我们可以参考比大小,选出一个数 n,将这个n定位成擂台的擂主,而其他的数值则上台与擂主进行PK,在我们设定的条件下,若n成功圆满的满足条件,则继续担任擂主,否则,则由战胜n的数值担任擂台的擂主。这次的形成一个全新的升序序列也是如此,按照顺序,抽出两个数组中的数值进行比对,若某一方赢得胜利,则来自这一方的这一个数值继续担任擂主,而失败的哪一方则继续往下选择数值进行对比,相当于是两只队伍进行擂台比赛。而当某一方,队员已经全部失败了,则由胜利的一方队伍进行内部对比,从而完成比赛。原创 2023-08-02 16:49:49 · 659 阅读 · 0 评论 -
C语言 猜数字
电脑会在0~100之间随机选择一个数字,由玩家进行猜。当玩家输入的数字大于电脑选择的数字时,会弹出提醒,表示输入的数字过大。当玩家输入的数字小于电脑选择的数字时,会弹出提醒,表示输入的数字过小。当玩家输入的数字等于电脑选择的数字时,会弹出“恭喜你猜到了”,表示游戏结束。项目要求:要求使用语句,语句,和函数、函数以及函数完成该项目。原创 2023-08-03 17:26:18 · 121 阅读 · 0 评论 -
C语言 兔子繁殖问题与斐波那契数列
兔子繁殖问题:假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?(采用函数递归解决问题)原创 2023-08-04 18:23:18 · 1279 阅读 · 1 评论 -
C语言 带有空格的直三角形
输入:多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。输出:针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。列:输入:5输出:(如下图示)原创 2023-08-04 19:57:16 · 408 阅读 · 1 评论 -
C语言 倒三角图像
输入:多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。输出:针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。列:输入:5。原创 2023-08-04 20:14:21 · 957 阅读 · 0 评论 -
数组和指针练习解析(6)
cpp是三级指针,cpp内存储的是cp的首元素地址。原创 2023-08-25 19:31:44 · 175 阅读 · 1 评论 -
数组和指针的练习解析(5)
题目:int main()pa++;return 0;思路分析:pa++;原创 2023-08-25 10:19:28 · 99 阅读 · 0 评论 -
数组和指针的练习解析(4)
且aa+1 又可以转化为aa[1]表示数组名,表示的是第二行的数组名,那么可以表示第二行第一个元素的地址而*就表示第二行第一个元素,此处的int*强制类型转化是没有用的。aa相当于首元素地址,在二维数组中首元素地址就是第一行的地址,而aa+1表示的就是第二行地址。ptr2-1就是第二行第一个元素减一,就是第一行最后一个元素,所以表示的就是元素5。原创 2023-08-25 09:55:37 · 95 阅读 · 1 评论 -
数组和指针练习解析(3)
题目:int main()int(*p)[4];p = a;return 0;思路分析:int(*p)[4];p = a;原创 2023-08-24 16:36:37 · 97 阅读 · 1 评论 -
指针和数组练习解析(2)
题目:int main()int *p;p = a[0];return 0;思路分析:p = a[0];p[0]原创 2023-08-24 10:00:46 · 91 阅读 · 3 评论 -
数组和指针练习解析(1)
题目:int main()return 0;思路分析:*(a + 1)2结论:原创 2023-08-23 19:52:37 · 141 阅读 · 5 评论 -
C语言 求一个整数存储在内存中的二进制中的1的个数
通过以上,我们得知新的n和老的n相比,二进制数位上的1在逐渐的减少,并且是从右往左的方向以此减少,所以,我们可以得到一个规律,n = n & (n-1) 在不断的减少二进制位数上的1.而将一个整数各个位数分离的方法,我们可以采用先 %10 后 /10的方法,前者取出最低位的数字,后者去除最低位的数次,并加以循环,我们便可以得到一个整数的所有位数。通过题目我们可知,一个整数在内存中的二进制数位是这个整数的补码,因此求的是这个整数的补码中的1的个数。求一个整数存储在内存中的二进制中的1的个数。原创 2023-08-07 10:16:36 · 141 阅读 · 0 评论 -
C语言 —— 写一个代码,判断一个数是否是2^n次方?
写一个代码,判断一个数是否是2^n次方?如果是正常的思路我们可能会使用pow()函数以及循环除去2的次方来进行循环判断,但是换一种思路展开,我们使用二进制数位是否能更加的简便呢?例如:010 - 2的二进制100 - 4 的二进制1000 - 8的二进制通过以上的展开,我们可以知道,2^n 这个数的二进制中只有一个1,所以,我们可以采取寻求1的个数来判断这个数是否是2^n次方。而判断是否只有一个1,我们可以通过 &的操作符进行多位的判断。原创 2023-08-07 10:36:39 · 237 阅读 · 0 评论 -
C语言 金币问题
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去。当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。请计算在前K天里,骑士一共获得了多少金币。二、题目要求。原创 2023-08-07 16:31:42 · 3007 阅读 · 3 评论 -
C语言 回文对称数
输入一个整数n(1原创 2023-08-07 20:00:39 · 595 阅读 · 0 评论 -
使用筛选法求出 n 以内的素数
筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。原创 2023-08-10 19:47:21 · 1620 阅读 · 1 评论 -
C语言 冒泡排序
将 arr 内的元素进行升序排列,得到一个新的数组这个过程中,我们可以使用冒泡排序。如上图所示,冒泡排序便是数组元素之间进行俩俩交换,类似于之前比大小中的打擂台,设立一个擂主进行打擂,完成条件进行交换便是打擂成功,直到最后抵达它应该所在的位置便是结束打擂。此时开始设立第二个擂主进行打擂,而且新设立的擂主不能打上一任的擂主和之前的擂主,且上一任的擂主必须保持原地不动,而打一次通关,则需要看需要打败的人数,以及之前的擂主和上一任擂主。以此类推,得到最后的结果。原创 2023-08-11 10:34:40 · 800 阅读 · 0 评论 -
C语言 棱形图案
于是我们可以设 下半部分总行数为 上半部分行数-1 也就是 line -1 , i为行数。通过观察,我们得到 单边空格数 = 上半部分总行数 - 行数 - 1。下半部分的 星号 = (下半部分总行数 - 行数 )× 2 - 1。通过观察,我们得知 下半部分的 单边空格数 = 行数。所以我们设 line 为上半部分总行数 i 为行数。如上图所示,我们可以将棱形进行拆解,分为上下两个部分。而 星号 = 行数 × 2 + 1。原创 2023-08-13 16:34:25 · 1321 阅读 · 0 评论 -
杨氏矩阵!!!!
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。1、先从右上角开始查找,若查找的数字K大于右上角的数字,那么行数+1。杨氏矩阵:矩阵的每行从左到右是递增的,矩阵从上到下是递增的。我们可以利用杨氏矩阵的特性,简化以往在数组中查数字的过程。3、若查找的数字K等于右上角的数字,那么数字K就在矩阵中。对于数字矩阵,我们应该要想到二维数组的矩阵特性。2、若查找的数字K小于右上角的数字,那么列数-1。假设:查找的数字为K,行数为 i 列数为 j。原创 2023-08-15 21:20:42 · 190 阅读 · 2 评论 -
使用冒泡排序模拟qsort
1、利用数组中的元素进行俩两比较,和循环的多次遍历进行排序,得到一个升序或者降序的排列顺序。2、但是效率过于底下,以及通过qsort的对比,冒泡排序只能用于整型(int)数组的比较和排列,对于其他数据类型的数组比较,显得无能为力。3、而且,效率底下,运算需要进行多次的遍历,需要设定另外的变量值,进行急刹车,才能避免不必要的遍历循环。原创 2023-08-16 17:37:10 · 138 阅读 · 0 评论 -
指针、数组、sizeof、strlen相关知识与练习题目
p是一个指针变量,根据指针变量的根本特性,所有的指针变量的大小都是四或八个字节。sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据。计算的是整个二维数组的大小,单位是字节-48。举例:a[3][4]原创 2023-08-17 19:38:51 · 105 阅读 · 0 评论 -
字符串旋转(1)
这是将y的内容拼接到x内容的末端,z是表示y内容的前z位拼接到x的末端,加入y是字符串,z是一个数字3,那么就是表示,字符串的前三位拼接到x内的末端。这个两次的局部翻转,和最后经过两次局部翻转后的大翻转的理论基础原理是数组逆序,和下标位置的确定,以及翻转区间的确定。设:真正挪动的次数为 time 字符串的长度为 len 输入的挪动次数为 k。y是指拷贝的内容,x是指将拷贝的内容y放置的空间!原创 2023-08-19 15:16:52 · 199 阅读 · 2 评论 -
调整数组使奇数全部都位于偶数前面
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。原创 2023-08-19 16:31:31 · 236 阅读 · 1 评论 -
字符串旋转(2)
方法二:我们使用以《字符串旋转(1)》的第一种方法进行挪动,挪动一个字符进行一次判断,最后在判断成功返回1,当字符串中所有的字符都挪动了一次后,任然没有结果,则返回0表示失败。方法一:可以将AABCD进行拷贝和拼接,变为AABCDAABCD,以此在使用库函数strstr进行判定,得到结果。表示的是进行判断,判断y是否是x的一部分,通常用于字符串,如果不是一部分则返回NULL。写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。y是指拷贝的内容,x是指将拷贝的内容y放置的空间!原创 2023-08-20 10:31:44 · 183 阅读 · 1 评论 -
题目——单身狗们!
这里用ret(5^6的结果)的原因是,ret本身就已经指明了不同之处,我们这一步做的就是把不同指出的位置找出来。当数字的二进制数位 在pos 这个位置为1时((arr[i]>>pos)——利用了&的特性,二进制数位同为1时才会为1 ),进行分离。使用了 & 1的特性来判断这个数字是否是1 ,又使用了原创 2023-08-21 10:52:35 · 127 阅读 · 5 评论 -
汽水问题!!!!
⽔已知1瓶汽⽔1元,2个空瓶可以换⼀瓶汽⽔,输⼊整数n(n>=0),表⽰n元钱,计算可以多少汽 ⽔,请编程实现。两个空瓶可以兑换一共汽水,所以在扣除金钱的来的汽水之后,剩下的汽水数量是和空瓶有关系的。用空瓶兑换汽水后,汽水在变成的空瓶 ,以及剩余的无法抵达兑换条件而落下的空瓶。原创 2023-08-21 19:44:07 · 168 阅读 · 2 评论 -
最大公约数和最小公倍数
对任意的若干个正整数,1总是它们的公因数。公约数与公倍数相反,就是既是A的约数同时也是B的约数的数,12和15的公约数有1,3,最大公约数就是3。指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。因此,我们可以先使用辗转相除法求出最大公约数,在将两个数相乘,得到的积在除取最大公约数,因此得到最小公倍数。可以利用最小公倍数和最大公约数之间的关系——最⼩公倍数可以由两数乘积除以两数的最⼤公约数求得。原创 2023-08-22 19:23:25 · 238 阅读 · 0 评论