- 博客(61)
- 收藏
- 关注
原创 【找单身狗】(2只):一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。
我们或许之前就已经做过这样的题:一个数组中只有1个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这1个只出现一次的数字。我们使用异或(^)可以很轻松地解决问题。当两个相同的数字异或时,结果为0。所以我们将所有的数字异或在一起,那么最后得到的结果就是那个只出现了一次的数字。我们来看下面的代码。显然我们找到了单身狗。
2023-03-31 09:08:34
478
原创 【数据结构】你真的认识“&”吗?它真的就只是“取地址”吗?或许你一直都在误解它。
注意,这里的&可不是表示取地址。如果你把它理解为取地址,那就在错误的路上狂奔,且一去不返了。相信大家在学习C语言时,也被指针折磨过不少。可能都出现过野指针等,这些失误让我们不胜其烦。其实,编写书籍的老师,使用“&”这个符号,就是为了减少指针的使用。“&”在这里,是C++中的“引用”。但是,这对于一些没有了解过相关语法的同志,那又成了一个坑。毕竟,C语言里面的“&”可是代表着“取地址”。那么,我们接下来就来好好说道说道,“&”到底是个什么东西。
2023-03-30 13:37:22
2485
原创 【C语言】【数据结构】循环队列实现(以带头节点的循环链表表示队列,并且只设一个指针指向队尾元素节点)
假设以带头节点的循环链表表示队列,并且只设一个指针指向队尾元素节点(注意:不设头指针) ,编写相应的置空队列、判断队列是否为空、入队和出队等。
2023-03-25 12:24:59
1801
原创 【C语言】 如何计算结构体的大小 - 结构体内存对齐
为什么会存在内存对齐?不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
2023-03-18 15:02:37
500
原创 【数据结构】顺序表中,如何实现接口:删除顺序表中所有值为item的数据元素,且时间复杂度为O(n),空间复杂度为O(1)
实现一个接口函数:删除顺序表中所有值为item的数据元素,且时间复杂度为O(n),空间复杂度为O(1)
2023-03-12 10:14:51
522
原创 【数据结构】单链表中,如何实现 将链表中所有结点的链接方向“原地”逆转
如何实现:将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求空间复杂度为O(1)
2023-03-11 16:56:45
2633
原创 [visual studio]中,关于如何 【调试】 的问题 及 技巧
调试(Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。正如本文一开始所说,不会调试的程序员不是好程序员。所以,我们一定要多去调试,在调试中不断进步,祝你我代码能力越调越强,在编程这条路上,一路高歌。
2023-02-22 18:52:33
3081
2
原创 [C语言]中,为什么整型数据以浮点型输出(或浮点数类型的数据以整型输出),其输出的结果与我们预期的大相径庭?这篇博客,带你拨开云雾见月明。
在我们学习C语言的过程中,可能会出现这样的情况:我们定义了一个整型数据,想以浮点型输出,结果却不是我们预想的那样。根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成以下形式:(-1)^S * M * 2^E(-1)^S 表示符号位,当S=0,V为正数;当S=1,V为负数。M表示有效数字,大于等于1,小于22^E表示指数位
2023-02-21 00:10:41
4829
4
原创 【C语言】关于二进制中,操作符(>>,<<,~等)的应用:交换两个变量(不创建临时变量);写一个函数返回参数二进制中 1 的个数;打印整数二进制的奇数位和偶数位;求两个数二进制中不同位的个数
在C语言中,有关二进制、位操作符等 的题目也许会把你难住,看完本篇文章,你将对它们在C语言中的使用有一个更深的认识。
2023-02-07 21:55:27
261
4
原创 【C++】一篇博客带你速通 初识【默认成员函数】中的:构造函数、析构函数、拷贝构造
看完本篇文章,你将对C++中的默认成员函数的构造函数、析构函数、拷贝构造有一定的初步的理解。默认成员函数6个默认成员函数(特殊的成员函数): 如果我们不实现,编译器会自己生成一份。初始化和清理: 1. 构造函数主要完成初始化工作(类似init) 2.析构函数主要完成清理工作(类似destroy)拷贝复制: 1. 拷贝构造是使用同类对象初始化创建对象 2.赋值重载主要是把一个对象赋值给另一个对象取地址重载: 主要是 普通对象 和 const对象 取地址,这两个很少会自己实现
2023-02-01 14:39:14
166
1
原创 【C语言】【数据结构初阶】 选择排序 、快速排序(重点)- 详解
选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。我们可以对其做一个优化:我们一趟选择,同时选出最小的和最大的,而非只选出最小/最大的。但是选择排序的时间复杂度为O(n^2),最好情况下,也为O(n^2)
2023-01-26 20:49:10
460
2
原创 【C语言】【数据结构初阶】 插入排序 ,希尔排序 - 详解
插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。
2023-01-26 12:37:49
623
原创 【C语言】实现扫雷小游戏 - 详解
在初阶学习C语言时,我们学习一段时间过后,可以通过写一个小游戏/小程序来提高我们写代码的能力,同时也为学习编程增添了一些乐趣,增加学习动力。
2023-01-16 14:15:41
267
原创 【C语言】 实现三子棋(井字棋) - 详解
在学习一段时间C语言后,我们可以写一个三子棋的小游戏。并且我们可以学着将代码分文间存放,而非全部写在一个文件内。比如将所有的函数声明,包含头文件,定义常量等都放在game.h里,将所有的函数实现放在game.c里,将主函数等放在test.c文件里。注意,这样就需要引用头文件,#include"game.h"
2023-01-15 11:33:43
930
原创 使用递归实现斐波那契数列、k的n次方、计算一个数的每位之和、字符串逆序、strlen、n的阶乘、打印一个整数的每一位(部分包含非递归方式)
所谓斐波那契数列,就是 1 1 2 3 5 8 13 21 .......这样的数列。第一位和第二位都是1,从第三位开始,为前两数之和,即F(n)=F(n-1)+F(n-2)
2023-01-14 10:12:20
909
原创 [C语言]中,常见的str函数,以及部分内存函数 (memcpy memmove)的模拟实现 - 详解
strlen() 函数是用来计算字符串长度的。例如:👇那么,我们要如何编写一个函数,来模拟实现strlen()的功能呢?
2023-01-11 23:39:46
345
原创 [C语言] 冒泡排序法 - 详解
冒泡排序是一种 较简单的 排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的 元素 ,如果顺序错误就把他们交换过来。
2023-01-10 15:46:23
2968
原创 【C语言】 求素数 / 求闰年【通俗易懂】
素数是在大于1的自然数中,除了1和它本身以外不再有其他因数。需要注意的是,1既不属于质数也不属于合数。
2023-01-08 16:26:02
212
原创 [C语言]中如何求解两个数的最大公约数【通俗易懂】
所谓的最大公约数,也称最大公因数,是两个或多个整数共有约数中最大的一个。我们这里只讨论两个整数的情况,当然了,多个整数也是一样求解,道理相通。直接求解,也就是所谓的“笨办法”,人轻松些,电脑累些。
2023-01-08 15:04:46
2074
原创 【C语言】中,输入一个数组,实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】
例如:第一次循环时,k=0,也就是先把数组里的第一个数,赋值给第一次循环里找到的最大的值;把第一次循环里找到的最大值,赋值给数组里的第一个数。这里需要注意,我们把k赋值给i,是为了避免前面已经排序好了的数字,再参与到之后的循环里,产生错误的结果或引起未知错误。本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。接下来的五个数字就是我们输入的数字。输入n,来决定数组中整数的个数。很显然,输出了三个最大的数字。接下来,就是对这个数组中的数字进行比较排序了。
2022-12-25 20:11:28
30680
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅