自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 顺序表、链表、栈和队列总结

顺序表、链表、栈和队列都是线性数据结构,但它们在管理和访问数据方面有不同的特点和用途。的结构实现更优一些,因为如果使用数组的结构,出队列在数 组头上出数据,效率会比较低。链表是由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。是一种线性表,在C语言中通常通过数组来实现。的结构实现更优一些。栈的实现一般可以使用数组或者链表实现,相对而言。队列是一种先进先出(FIFO)的数据结构。栈是一种后进先出(LIFO)的数据结构。队列也可以数组和链表的结构实现,使用。下面是一个简单的顺序表在C语言中的。

2024-06-08 10:24:10 1177 7

原创 双链表的实现

【代码】双链表的实现。

2024-06-07 10:50:44 156 4

原创 单链表的实现

【代码】单链表的实现。

2024-06-07 10:49:56 246

原创 队列数据结构

FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。队列也可以数组和链表的结构实现,

2024-06-05 11:16:37 1003 12

原创 顺序表数据结构

1.线性表1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表。

2024-06-04 12:50:58 595 26

原创 链表逆序用哨兵位头节点

在C语言中实现链表的逆序,使用哨兵头节点是一种常见的做法。哨兵头节点可以简化代码逻辑,特别是当链表为空时,可以避免空指针异常。下面是一个使用哨兵头节点逆序单链表的C语言实现。

2024-06-02 10:50:08 634 12

原创 反转链表和哨兵位

int val;} ListNode;

2024-06-01 12:33:26 1311 12

原创 删除有序数组中的重复项

【代码】删除有序数组中的重复项。

2024-05-31 10:18:24 500 6

原创 strcat的使用和模拟实现

• ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。• 源字符串必须以 '\0' 结束。,能容纳下源字符串的内容。• ⽬标空间必须可修改。• 可以自己给自己追加。可以确定到追加到哪一个。

2024-05-30 08:20:35 368 5

原创 学生信息管理系统(静态版)

学生信息管理系统(静态版)

2024-05-29 08:07:37 644 4

原创 通讯录的实现

13、排序(用年龄,名字都行),用年龄举例,sqort用法有说过。1、人的信息:姓名+年龄+性别+地址+电话。2、通讯录中可以存放100个人的信息。知识点:typedef:重命名。6》排序(用年龄,名字都行)7、用do-while循环。11、修改指定联系人的信息。12、显示所有联系人的信息。3》查找指定联系人的信息。4》修改指定联系人的信息。5》显示所有联系人的信息。知识点:-加数字左对齐。4、先写一个菜单函数。

2024-05-28 12:43:10 695 19

原创 结构体知识点

1.结构的声明1.结构的声明。

2024-05-27 10:12:19 275 13

原创 strstr的使⽤和模拟实现

Returnsa pointer to the irst occurrence of str2 in str1, or a null pointer if str2 is not part of str1. (函数返回字符串str2在字符串str1中第⼀次出现的位置)。(字符 串的⽐较匹配不包含 \0 字符,以 \0 作为结束标志)。strstr的模拟实现。strstr的模拟实现。

2024-05-27 10:11:10 216 1

原创 操作符的优先级

2024-05-26 14:29:40 116 1

原创 动态内存管理

• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整 但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知 道,那数组的编译时开辟空间的⽅式就不能满⾜了。• 有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的使 ⽤内存,我们⼀定会对内存的⼤⼩做灵活的调整。• 如果参数 ptr 指向的空间不是动态开辟的,那free函数的⾏为是未定义的。• 这个函数调整原内存空间⼤⼩的基础上,还会将原来内存中的数据移动到 新 的空间。

2024-05-26 14:25:10 560 2

原创 memmove使⽤和模拟实现

• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。• 如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。输出的结果:1 2 1 2 3 4 5 8 9 1。这是memmove在库里的定义,具体可在。二:memmove的模拟实现。

2024-05-25 12:03:37 314 3

原创 qsort的使用和模拟实现

这是memmove在库里的定义,具体可在查看二:使⽤qsort排序结构数据先定义一个结构体1:假 设 按 照 年 龄 来 比 较2:strcmp - 是 库 函 数 , 是 专 门 用 来 比 较 两个 字 符 串 的大 小 的,假 设 按 照 名 字 来 比 较3:用qsort调用以上函数进行快排三:模拟使用使⽤回调函数,模拟实现qsort(采⽤冒泡的⽅式)。注意:void*有讲解。

2024-05-25 11:50:26 431 1

原创 strcmp的使⽤和模拟实现

如果两个字符串的前n个字符都相同,但其中一个字符串的长度小于n(也就是说,一个字符串提前遇到 \0结束符),那么strncmp` 会将较短的字符串视为“较小”的字符串。如果 s1 的前 n 个字符在字典顺序上小于 s2 的前 n 个字符,或者 s1 是一个较短的字符串(即 s1 在 n 个字符内遇到 \0),返回一个负数。如果 s1 的前 n 个字符在字典顺序上大于 s2 的前 n 个字符,或者 s2 是一个较短的字符串(即 s2 在 n 个字符内遇到 \0),返回一个正数。三:strncmp函数的使用。

2024-05-24 17:08:00 549 1

原创 有序的一维数组中插入一个整数并保持其有序性

在C语言中,要在已排序的一维数组中插入一个整数并保持数组的有序性,你需要首先找到插入点的位置(即该整数应该插入的位置),然后将该位置及其后的所有元素向后移动一个位置,以便为新元素腾出空间。在insertIntoSortedArray函数中,我们通过一个循环找到新元素应该插入的位置,并将该位置及其后的所有元素向后移动一个位置。insertIntoSortedArray函数接受一个指向数组的指针arr,一个指向当前数组大小的指针size,以及要插入的整数num。使用指针遍历数组,找到新元素应该插入的位置。

2024-05-24 17:04:10 867 4

原创 memcpy的使⽤和模拟实现

这是memcpy在库里的定义,具体可在查看•num单位是字节,下面的模拟实现需要强制类型转换•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。• 这个函数在遇到 '\0' 的时候并不会停下来。• 如果source和destination有任何的重叠,复制的结果都是未定义的。对于重叠的内存,交给memmove来处理。(下期会有)memcpy的使⽤的代码void和void*的用法已经发布。

2024-05-23 13:07:42 1222 7

原创 void和void*

然后,它将value存储在新分配的内存中,并返回一个指向该整数的指针,但指针的类型是void*。是的,在C语言中,函数名定义为返回void*类型确实可以返回值。void*是一个特殊的指针类型,被称为通用指针或空指针,它可以指向任何类型的数据。因此,当函数被定义为返回void*类型时,它可以返回一个指向任何类型数据的指针。void* 类型的指针本身是一个地址,不能直接打印为具体的值,因为它不指向一个具体的类型。如果你需要函数返回某种类型的数据,那么你应该在函数定义中指定返回类型,而不是void。

2024-05-23 13:03:01 463 1

原创 对AIGC行业的看法

然而,进入该行业需要充分了解行业的特点和趋势,掌握相关的技术和知识,并制定相应的商业计划和风险应对策略。此外,随着定制化AIGC工具的普及,AIGC服务将变得更加精准和多样化,进一步推动整个行业的创新和发展。首先,AIGC技术门槛较高,需要掌握较为复杂的算法和编程技能,这对个人的技术能力和学习能力提出了较高的要求。AIGC行业涉及到人工智能、机器学习、自然语言处理等多个领域的技术,因此具备相关的编程、算法和数据科学技能将是非常有竞争力的。从市场需求的角度来看,AIGC行业人才的需求呈现出快速增长的趋势。

2024-05-22 21:58:13 465 2

原创 signed和unsigned

在C语言中,signed和unsigned是用来描述整数类型的修饰符。signed修饰的整数类型可以表示正、负或零的值,而unsigned修饰的整数类型只能表示非负的值。例如,signed int可以表示正数、负数和零,而unsigned int只能表示非负数和零。默认情况下,如果不显式地指定修饰符,int类型被认为是signed int。在使用signed和unsigned之间做选择时,需要考虑数值的范围和运算的需求。

2024-05-22 21:56:56 354

原创 辗转相除法

递归性质:对于任意两个正整数a和b(a>b),它们的最大公约数等于b和a除以b的余数r的最大公约数。需要注意的是,虽然辗转相除法在处理大数时可能会比较慢(因为其时间复杂度为O(log(min(a,b)))),但它仍然是一个非常重要的算法,因为它不仅简单易懂,而且在实际应用中具有广泛的应用,如密码学、线性代数等领域。整除性质:如果两个整数a和b的最大公约数是d,那么对于任何整数k,a和b的线性组合ax+by(其中x和y是整数)也能被d整除。初始化两个整数a和b,其中a是较大的数,b是较小的数。

2024-05-21 12:33:54 319 4

原创 约瑟夫环问题

约瑟夫环问题是一个很经典的问题:一个圈共有N个人(N为不确定的数字),按顺序第一个人的编号为1,第二个人的编号为2,第三个人的编号就为3,以此类推第N个人的编号就为N,现在提供一个数字K,从第一个人开始报数(从1到K),依次类推,报到M这个数字的人出局,紧接着从出局的这个人的下一个人重新开始从1报数,和上面过程类似,报到K的人出局,直到N个人全部出局,请问,这个出局的顺序是什么?,6号出局之后,要从出局的这个人(6号)的下一个未出局的人(7号)重新开始从1开始报数,所以7号从1开始继续报数,那么,

2024-05-21 12:32:19 1327 6

原创 c语言格式化输出

注意,当使用%p来输出指针时,通常需要将指针转换为(void*)类型,以避免类型不匹配的警告或错误。在C语言中,格式化输出通常使用printf函数,它允许你指定一个格式化的字符串和一系列参数,然后按照指定的格式输出到标准输出(通常是终端或控制台)。格式说明符以%开头,后面跟着一个或多个字符,用于指定如何输出后续的参数。如果输出的数据宽度小于这个值,则使用空格进行填充(除非使用了其他填充字符)。根据浮点数的大小自动选择%f或%e格式,但不输出无意义的零。输出一个指针的值,通常显示为十六进制格式。

2024-05-20 23:04:09 320 2

原创 size_t和int总结

size_t 的大小和范围也取决于具体的编译器和平台,但通常与系统的指针大小相同(例如,在 64 位系统上,size_t 通常是 64 位)。size_t 的表示范围取决于平台和编译器,但通常是一个足够大的无符号整数类型,能够表示任何数组或对象的大小。size_t 是无符号的,因此它不能表示负数。int 的表示范围也是依赖于平台和编译器的,但在大多数现代系统上,它是一个32位有符号整数,能够表示从-2,147,483,648到2,147,483,647的值(这是对于使用补码表示法和二进制32位的系统)。

2024-05-20 22:58:16 339

原创 二维数组和一维数组

在上面的例子中,matrix 是整个二维数组的名称,它的类型是一个有3个元素的数组,每个元素是一个有4个int的数组。这个指针的类型是指向数组的指针,其中数组的元素是另一种类型的数组。虽然二维数组的地址在概念上指向其第一行,但在实际使用中,我们通常通过指向数组元素的指针来访问二维数组的元素,而不是直接通过指向数组的指针。当我们说“一维数组的地址”时,我们通常指的是数组第一个元素的地址。一维数组的地址是一个指向其元素类型的指针,而二维数组的地址是一个指向数组的指针,其中数组的元素是另一种类型的数组。

2024-05-18 20:16:29 204 4

原创 数组名和&数组名

然而,由于C语言的标准库函数通常只接受指向数组首元素的指针和表示数组大小的额外参数(如 int *arr, size_t size),所以 &数组名 的使用场景相对较少。这个地址的类型是指向数组的指针,其类型与数组的类型相关,并且包含了数组的大小信息。在C语言中,这种类型的指针通常被称为“指向数组的指针”。arr 在表达式中通常表示数组首元素(即 arr[0])的地址,并且它的类型是 int *(指向整数的指针)。&数组名 获取的是数组本身的地址,其类型为指向数组的指针,这种指针包含了数组的大小信息。

2024-05-18 19:58:11 183

原创 char arr和int arr的区别

int arr`:这是一个整数数组,`arr` 中的每个元素都是 `int` 类型,用于存储整数数据。`char arr`:因为 `char` 类型通常是1个字节,所以整个数组 `arr` 的内存占用将取决于它包含的元素数量。`int arr`:由于 `int` 类型通常是4个字节,`arr` 的内存占用将是元素数量的4倍。对于 `char arr`,你通常会使用C语言的字符串函数,如 `strlen`, `strcpy`, `strcat` 等来处理字符数组。`,编译器会自动添加终止的空字符。

2024-05-18 19:54:14 410 1

原创 指针小总结

根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是 int [5] ,所以第⼀⾏的地址的类 型就是数组指针类型 int(*)[5]。parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。• &数组名,这里的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)//数组的每个元素是int*。

2024-05-17 21:24:11 946 7

空空如也

空空如也

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

TA关注的人

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