自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通讯录的实现

这个代码通过顺序表的方式,来实现通讯录,功能有显示,删除,修改,查找,增加的功能。

2023-09-27 22:34:23 189

原创 结构体对齐规则---关于结构体大小的问题

第一点 ,第一个成员在与结构体变量偏移量为0的地址处。第二点,其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处对齐数=编译器默认的一个对齐数与该成员大小的较小值。vs中默认的值为8Linux中没有默认对齐数,第三点,结构体总大小为最大对齐数 (每个成员变量都有一个对齐数)的整数倍第四点,如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。#pragma pack(n) 这条语句,将其放置在文件的首部,就可以达到更改

2023-09-24 16:32:33 222 1

原创 判断字符类型函数和内存函数

isdigit函数 isxdigit函数 islower函数 isupper函数 isalpha函数 isalnum函数isalnum函数ispunct函数isgraph函数isprint函数tolower函数toupper函数memcpy函数内存函数是以字节来计算的下面是 memcpy() 函数的声明。void *memcpy(void *str1, const void *str2, size_t n)memmove函数参数void *memmove(void *str1, const voi

2023-09-23 00:19:24 177 6

原创 Void*指针(空指针)讲解----关于强制转换后能不能自身++的问题

结言:本人笔拙,无法将自身的想法一一阐述,希望各位在阅读完后,能给出相应的意见,也欢迎大家在阅读之后提出一些问题,我很乐意帮助大家。前置++在有些编译器是会出现错误的,例如在c++中就不能这样去使用,不能保证完全正确的,不然会出现下列问题。强制类型转换是临时的!在后置++的时候这个强制类型转换没有发挥作业了。那我们该如何实现void*指针+-呢。前言-----是不可以的。这样就可以了~~~~

2023-09-21 22:45:10 254 2

原创 模拟实现strcpy

使用 const是为了不让s2被修改。

2023-09-18 11:21:36 41 1

原创 三种方式模拟实现strlen库函数(计数,指针,递归)

1.计数器方法计算字符串长度2.指针方法计算字符串长度3.递归方法计算字符串长度日拱一卒,功不唐捐,希望阅读这篇文章的人能够走完这条路。也欢迎大家在这篇文章下评论交流咯,互相进步!这是通过指针-指针的方法,获取它们之间元素个数的方法。

2023-09-18 11:16:33 57

原创 qsort底层逻辑讲解,使用冒泡排序方法(bubble_sort)

众所周知,qsort方法是中的快速排序库函数,但是它的底层逻辑和需要传入的参数,让人摸不着头脑了,所以今天我会去讲解该函数的底层逻辑和参数的作用,还有为什么它可以排序所有类型的数据的原因。。cmp函数,这的cmp函数不是固定的,正如cmp_int是用来比较int类型的数据,这个cmp是函数指针了,指向的是cmp_int函数,

2023-09-14 16:42:14 110 8

原创 ***基础排序算法之***选择排序***

遍历整个数组,找到整个数组中最小或者最大的数字,把其放在最前面,当然了,放在最前面,我们还要去交换它们的,毕竟不能少个数据嘛,对不对。想了解一个算法的思路,可以先从这算法的名字下手,选择排序,那就是选择咯,那我们进一步去想,代码----------------选择排序的时间复杂度为。

2023-09-07 17:54:30 39 1

原创 力扣-----169. 多数元素(投票法)进阶

给定一个大小为n的数组nums,返回其中的多数元素。⌊ n/2 ⌋你可以假设数组是非空的,并且给定的数组总是存在多数元素。32这里要讲的是投票法,这种方法是可以满足。

2023-09-05 17:25:18 79 1

原创 求最大公约数之辗转相除法

举个例子,求6和15的最大公约数-------------------------------------------------------------------------------------我们将两数中较大的那一个(15)看作是被除数A,将较小(6)的那一个看作是除数B,二者相除的商记作C,余数记作D,这个C在这是没什么用的,D有大用!A/B=C余D,除数B和余数D能被同一个数整除,那么被除数A也能被这个数整除。或者说,除数与余数的最大公约数,就是被除数与除数的最大公约数,就像这样。

2023-08-30 21:56:01 77

原创 C语言---初阶指针=.=讲解 (野指针原因+规避+指针运算)

指针是什么内存被划分成一个个的内存单元,每个内存单元的大小是1个字节,1个字节就是8个bit位每个字节的内存单元都有一个编号,这个编号就是地址,地址在C语言中称为指针指针变量大小 无论是什么类型的指针大小都是4字节或者8字节,下图是64位操作环境大小是8而地址就是用指针变量来存储的,就像这样int a = 10; int* p=&a;那我们该如何去规避野指针呢1.....在创建指针的时候初始化我们在没有明确的地址去给到p的话,我们在初始化的时候要int* p=NULL的有明确的

2023-08-18 16:23:11 87 7

原创 牛客网 NC107 寻找峰值 (二分查找)

NC107寻找峰值描述给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于2.假设nums[-1] = nums[n] = 负无穷3.对于所有有效的 i 都有 nums[i] != nums[i + 1]2---二分查找因为题目将数组边界看成最小值,而我们只需要找到其中一个波峰,因此只要不断地往高处走,一定会有波峰。那我们可以每次找一个标杆元素,将数组分成两个区间,每次就

2023-08-15 22:46:32 56 1

原创 面试经典 150 题--80-- 删除有序数组中的重复项 II(双指针)

到慢指针的地方就可以了,只不过26是出现一次就可以了,这80题删除有序数组中的重复项 II就是出现两次了, 记住。这道题与题号26差不多的思路的,快慢指针的思路的,通过快指针去找到后面的数字,将其。删除重复出现的元素,使得出现次数超过两次的元素。并在使用 O(1) 额外空间的条件下完成。不需要考虑数组中超出新长度后面的元素。函数应返回新长度 length =, 并且原数组的前五个元素被修改为。, 并且原数组的前五个元素被修改为。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。

2023-08-14 22:42:55 54 1

原创 面试经典 150 题--力扣88. 合并两个有序数组(双指针+数组)思路讲解 C语言

首先nums1长度是m+n的,所以我们只需要从尾部进行操作就可以了的,首先设置三个指针m,n,i,m去指向nums1[m-1]的,n指向nums2[n-1],而i指向nums1[m+n-1],然后向前遍历就可以了,停止条件是m>=0以及n>=0,ok,我们开始吧。因为swap(nums1[i--], nums2[n--]);,5,6] ,其中斜体加粗标注的为 nums1 中的元素。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。需要合并 [1] 和 []。

2023-08-13 22:49:58 166 1

原创 面试经典 150 题 力扣--27. 移除元素(数组,双指针) 思路+讲解

你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。这道题说了不能去使用额外的空间,要求的是原地修改,所以我们只能在nums数组上操作的,不能再暴力遍历,把不是val的值,赋值到另外一个数组的。我们可以去设置双指针(left,right)来对这个数组操作,右指针(right)是用来遍历整个数组的。你不需要考虑数组中超出新长度后面的元素。你不需要考虑数组中超出新长度后面的元素。

2023-08-12 12:03:05 62 1

原创 8.11每日一练(整形提升,左移操作符,最大连续 1 的个数,完全数计算)

等于-2147483648,取反+1获得补码1000 0001,右移31位就是1111 1111,移去的补符号位1,取反+1获得原码1000 0001 (这里为了方便,简化了一下,改成了16进制)x和y比较,它们的类型就要相等,由于y是无符号整形,所以提取x(-1)补码出来进行整型提升,而我们知道无符号整形是没有正负的,这也就意味着原码,反码,补码是相等的。我们得到,这需要去遍历这个数组,去寻找连续1的个数,所以我们呢,需要创建count来记录当前连续1的个数,还需要建立sum来记录。

2023-08-11 14:51:31 62 1

原创 力扣 leetcode----448.找到所有数组中消失的数字

448.找到所有数组中消失的数字给你一个含n 个整数的数组 nums ,其中 nums[i] 在间1到n内。请你找出所有在1,n] 范围内没有出现在 nums 中的数字,并以数组的形式返回结果这道题有两种解法的,一种是初阶解法,再创建一个数组,利用建立哈希表的方法,另一种是在nums数组上建立哈希表初阶(哈希表)遍历nums数组,遇到1就是设置ans[1]为1,遇到2就是设置ans[2]为1,以此往返,直到遍历完,然后再对ans数组遍历一遍,遇到不为1的数组,那么数组下标就是没有出现的数字

2023-08-10 17:18:50 72 1

原创 C语言 关键字const修饰指针讲解

很多人认为通过const就可以使*p指向的值不修改,这其实不可能的,因为const仅仅修饰指针,并没有修饰那个变量的!地址和值都不能变,这个值是指通过*p修改a,而不是a的值修改了*p值不动的,就像有两道门,这道门行不通,就可以换一道门进入的。类似这种int const *p const char *p都是放在*的左边的,const修饰的是*p,从而导致了*p不能被修改,p指向的地址是可以变得,类似这种char*const p int *const p 放在*的右边,就导致了p不能动了,

2023-08-07 22:58:29 83

原创 倒置字符串(将一句话的单词进行倒置,标点不倒置。比如 “I like beijing.“,经过处理后变为:“beijing. like I“。字符串长度不超过100)

倒置字符串(将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。字符串长度不超过100)输入描述:输入一个仅包含小写字母、空格、'.' 的字符串,长度不超过100。'.' 只出现在最后一个单词的末尾。输出描述:依次输出倒置之后的字符串,以空格分割示例1输入I like beijing.输出beijing. like I

2023-08-07 22:35:44 444

原创 求最小公倍数

题目描述:正整数 a 和正整数 b 的最小公倍数,是指能被 a 和 b 整除的最小的正整数请你求 a 和 b 的最小公倍数比如输入5和7,5和7的最小公倍数是35,则需要返回35输入描述:输入两个正整数,1≤a,b≤100000 输出描述:输出最小公倍数。本道题有两种解法,一种是通俗易懂的暴力遍历解法,第二种就是聪明一点的算法。最小公倍数的概念是公倍数是指在两个或两个以上的中,如果它们有相同的,这些倍数就是它们的公倍数。公倍数中最小的,就称为这些的。

2023-08-07 19:01:13 54

原创 题目unsigned int a= 0x1234;unsigned char b = *(unsigned char *)&a;在32位大端模式处理器上变量b等于( )

题目unsigned int a= 0x1234;unsigned char b = *(unsigned char *)&a;在32位大端模式处理器上变量b等于( )强制转换指针类型,就会使char指针指向a的一个字节两个bit位,又因为大端字节序存储,是将低字节存储在高地址,a=0x1234的意思是a=0x00001234,因为0x是16进制类型的,知道吧,

2023-08-04 14:32:25 504 1

原创 深度剖析数据在内存中的存储(整形类)

1.数据类型详细介绍2.整形在内存中的存储: 原码、反码、补码3.大小端字节序介绍及判断

2023-08-04 13:35:38 45 1

原创 for的用法详解,for循环,关于i++,++i区别

下面来介绍在for循环中i++,++i的区别了,先字面解释一下,i++是使用i之后i=i+1,而++i是在使用i之前,就已经完成了i=i+1。像这种代码,就是i在for语句前面已经赋值了,不需要重新赋值,换而言之,你在for之前i的值,满足你在做for循环i的初始值,下面的代码就可以解释了。表达式2就是循环条件了,控制for循环的次数,从而达到停止的效果。for循环中,表达式的隔开,不能去使用逗号,的,只能去用分号;那么,循环条件有=循环次数就是n-i+1。以上就是for循环的总结了,共勉!

2023-07-29 12:38:50 6763 1

原创 不常见操作符详解(<< >> & ^ | &= ^= |= >>= <<=)

这是左移操作符,要想正确地使用,还得引入三个定义,为

2023-07-28 16:45:49 495 2

原创 扫雷小游戏项目的实现(C语言)代码+解析

首先--->,扫雷是要有两个数组的,一个用来存放当前位置是否有雷,另外一个是用来显示当前位置附近八个格子有几个雷。这样我们就完成了当前的数组的创建了。然后--->,就是打印棋盘,排雷(输入坐标)...

2023-07-27 19:26:30 58 1

原创 简单三子棋的实现(C语言)思路步骤+全部代码!!!!

就是打印嘛,很简单的printf("***** 1 游戏开始 *****\n");printf("***** 0 退出游戏 *****\n");

2023-07-25 13:49:46 66

原创 自己对KMP算法的一些见解

在这篇文章中,我会以一个初学者的姿势去让你们理解KMP算法具体实现情况,KMP本身其实并不是很难,但网络上有很多不同形式的代码,会让我们混淆其中的思路。如果Str[I]==Sun[J] 那就I,J++往后面走,不相等的话J就回到了Sub数组前面,I是不会动的,而J回去的位置就是由next数组确认的,在这里用图片形式说明是最好的。我们作为一个初学者,J通过next数组移动了,next数组后面会讲解,大家先不要急,J移动到了next[J]是不是,这样移动不用再去管前面字母的差异了,这就是next数组神奇。

2023-07-20 17:41:04 178 2

原创 这是我的第一篇博客

在大一的时候,因为我是软件工程专业嘛,对c语言以及java都有所了解,但我在大一比较的放松,并且我还参加了一届的蓝桥杯,什么奖都没拿到,真的是让我意识到了学习编程的重要性,导致我有点担心在未来的工作竞争上,会没有什么竞争力,所以呢,我就在这个暑假开始重新学习C语言了,正所谓c为万物。在大一的时候,我就学了一个月的数据结构了,目前学到了kmp算法了,由于期末考试,就把它放在了一边,希望在这个暑假能将数据结构学掉一半,这样在大二就可以把重心放在其他方向上了。对工作公司的想法,我暂时还没有什么看法。

2023-07-10 13:32:49 54 1

空空如也

空空如也

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

TA关注的人

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