自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】栈和队列-->理解和实现(赋源码)

栈是一种特殊的线性表,它只允许在一端进行插入和删除操作。这一端被称为栈顶,另一端被称为栈底。栈的特点是后进先出(LIFO),即最后进入的元素最先被移除。队列是另一种特殊的线性表,它允许在一端进行插入操作,在另一端进行删除操作。插入操作的一端称为队尾,删除操作的一端称为队头。队列的特点是先进先出(FIFO),即最先进入的元素最先被移除。栈和队列有各自的特点,严格讲用顺序表还是链表的实现都可以。但我们根据结构特点选择一个更加适合的结构进行是实现。int top;}ST;

2024-06-07 11:57:58 1431 39

原创 【数据结构】双向带头(哨兵位)循环链表 —详细讲解(赋源码)

双向循环列表是一种特殊的数据结构,它结合了双向链表和循环链表的特点。在双向循环列表中,每个节点除了拥有指向下一个节点的指针外,还拥有指向上一个节点的指针。此外,列表的头节点和尾节点通过这些指针相互连接,形成一个闭环。这种结构允许从任何一个节点开始,既可以向前遍历,也可以向后遍历,直到回到起点,从而实现高效的双向遍历。定义节点结构:每个节点包含数据部分和两个指针部分,分别指向前一个节点和后一个节点。创建头节点:头节点是双向循环列表的起始点,它的前驱指针指向自己,后继指针也指向自己,形成一个闭环。

2024-06-04 20:41:17 1929 43

原创 【数据结构】单链表-->详细讲解,后赋源码

单链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。在单链表中,每个节点的地址不一定是连续的,而是通过指针相互链接起来。单链表的特点是存储灵活,可以动态地添加或删除节点,不需要预先分配固定大小的存储空间。1.定义节点结构体:首先需要定义一个结构体来表示链表的节点,通常包括数据域和指针域。2.动态创建节点:使用malloc函数为每个节点分配内存空间,并初始化数据域和指针域。3.插入节点:根据需要将新节点插入到链表的适当位置。插入操作可以是头插法或尾插法。

2024-06-01 12:50:25 2033 28

原创 顺序表以及实现(结构篇)

随机访问:可以通过首地址和元素序号在常数时间内找到指定的元素。存储密度高:由于每个结点只存储数据元素,没有额外开销,因此存储密度较高。物理位置相邻:物理位置和逻辑位置一致,保持相邻,但这也意味着插入和删除操作可能涉及到大量元素的移动。顺序表主要分为动态和静态,由于静态举局限性,在这主要实现动态顺序表。动态顺序表主要运用malloc()和realloc()函数对内存进行动态开辟。动态顺序表主要涉及初始化,销毁,增容,插入,删除,查找。准备工作;int size;}SL;

2024-05-28 17:23:56 1282 18

原创 C语言动态内存管理

C语言动态内存管理是指在程序运行时,根据需要动态地分配和释放内存空间。这种管理方式相比于静态内存管理具有更高的灵活性和效率。

2024-05-27 13:31:40 1089 9

原创 时间(空间)复杂度(结构篇)

众所周知:程序 = 算法 + 数据结构;衡量一个算法的标准就是算法效率。那么,算法效率是指算法执行的时间和所需的存储空间。在计算机科学中,算法效率通常通过时间复杂度和空间复杂度来衡量。时间复杂度是衡量算法执行时间随输入规模增长而变化的度量,它指示了算法的效率和性能。时间复杂度通常使用大O符号(O)来表示,表示算法执行时间的上界。时间复杂度描述的是算法执行时间与输入规模的增长趋势,而不是具体的执行时间。空间复杂度(Space Complexity)是衡量算法在执行过程中临时占用存储空间大小的量度。

2024-05-26 15:53:37 1413 12

原创 C语言程序的编译

链接的重要性在于它能够将分散在不同文件中的代码片段整合成一个完整的程序。在链接过程中,程序中的符号引用会被解析到它们在内存中的实际地址,确保程序的正确执行。预处理器会处理源代码中的预处理指令,如宏定义、头文件包含、条件编译等,生成一个经过预处理后的文件。:编译器将预处理后的文件进行词法分析、语法分析、语义分析等操作,生成一个汇编代码文件。是将编译后的目标文件与所需库文件合并,解决符号引用和地址重定位,生成可执行文件的过程。,这样会将预处理后的代码保存到yourfile.i文件中。

2024-05-22 11:59:08 829 9

原创 C语言 宏

在C语言中,宏定义是通过 #define 关键字实现的,它可以将被定义的标识符替换为相应的字符串或代码片段。宏定义主要用于简化代码、提高程序的通用性和易读性,同时也能在一定程度上提高程序的运行效率在C语言中,预定义符号是由编译器提供的,它们具有特殊的含义和功能。__FILE__:表示当前源文件的文件名,可用于调试时显示文件名。__LINE__:表示当前代码所在的行号,可用于调试时显示代码位置。__DATE__:表示当前编译的日期,格式为"MMM DD YYYY",例如"Jul 29 2023"

2024-05-21 21:44:45 1523 8

原创 C语言文件处理

文件有不同的类型,在程序设计中,主要用到两个文件。程序文件:源程序文件(.c),目标文件(.obj),可执行文件(.exe)等。这种文件的内容主要是程序代码。数据文件:是存储数据的文件,它包含了一组有组织结构的数据,可以被计算机程序读取、写入和处理。数据文件可以使用各种格式进行存储,包括文本文件、二进制文件、数据库文件等。

2024-05-17 21:04:07 1524 6

原创 C语言自定义类型

结构体通过structstruct 结构体名 {数据类型 成员1;数据类型 成员2;// ...例如:定义一个学生的结构体int age;首先,你需要定义一个结构体,其中包含了你想要声明的位段成员。int a: 2;// 定义一个名为a的位段,占用2位int b: 5;// 定义一个名为b的位段,占用5位} MyStruct;接下来,你可以创建这个结构体的实例,并通过位段成员来访问或修改数据。// 将位段a设置为1// 将位段b设置为3注意:位段成员的类型必须是int或。

2024-05-14 14:07:39 1256 6

原创 C语言操作符(补充+面试)

移动过程中,左侧空出的位用符号位填充(对于有符号数)或者用0填充(对于无符号数)。例如,将二进制数1010右移1位,得到的结果是001010。在C语言中,右移操作符通常用于实现除以2的n次方的操作。例如,将二进制数1010左移1位,得到的结果是101000。在C语言中,左移操作符通常用于实现乘以2的n次方的操作。只有对应的两个二进位均为1时,结果位才为1,否则为0。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两数各对应的二进位相异或。当两对应的二进位相异时,结果为1,否则为0。

2024-05-12 14:53:08 574 2

原创 C语言指针(3)

C语言中的回调函数是指一个函数作为参数传递给另一个函数,在适当的时候由另一个函数调用。回调函数在需要执行某些特定任务时被调用,可以实现程序的灵活性和可扩展性。回调函数就是一个通过函数指针调用的函数。指针可以指向任意类型的数据,这意味着可以用任意类型的指针对。则是“无类型指针”,它可以指向任何类型的数据。库函数中 qsort 就是一个回调函数。关键字表示“无类型”,而。

2024-05-08 21:34:08 589 2

原创 C语言数据的存储(内含百度笔试题)

一个字节序列为0x12345678,则在大端模式中存储为0x12 0x34 0x56 0x78,而在小端模式中存储为0x78 0x56 0x34 0x12。符号位用于表示浮点数的正负,指数位用于表示浮点数的规模,尾数位则用于表示浮点数的精度。在原码表示中,最高位bit表示符号位,0表示正数,1表示负数。指数位占用11位,其中第1位是符号位,其余10位是指数的实际值。尾数位占用23位,其中第1位是隐含的1,其余22位是小数部分。指数位占用8位,其中第1位是符号位,其余7位是指数的实际值。

2024-05-03 14:08:01 1117 4

原创 C语言指针(2)

指针和函数图中,swap中采用传址调用,*px中就是整形a的值,*py就是整形b的值。执行*px和*py的互换也就是执行a和b的互换。如果采用传值调用会出现什么呢?在哈函数调用的过程中,a,b的值分别传给了x和y。在执行swap后,仅仅发生了x和y的互换,在函数执行结束之后,这块空间便会释放,main函数中并未发生a和b的互换。简而言之,就是“单向传递”的“值传递”的方式,形参值得改变并不会影响实参。注意:函数的调用可以(而且只可以)得到一个返回值(即函数值),而且使用指针变量作为参

2024-05-02 14:32:54 496 1

原创 C语言指针(1)

如果有一个变量专门用来存放另一个变量的地址(即指针),则称之为“指针变量”。总的来说,指针变量就是一个地址变量,用来存放地址,指针变量的值就是地址(即指针)左端的int 实在定义指针变量时必须指定的”基类型“指针变量前面的" * "表示该变量为指针类型。在定义指针变量时必须指定基类型。指向整形类型的指针类型表示为“ int* ”(读作 指向int的指针,或者 int指针)一个变量的指针包括两个方面是以储存单元编号表示的纯地址。指向储存单元的数据类型。

2024-04-28 21:11:28 489 1

原创 扫雷(C语言)

扫雷代码实现

2024-04-23 15:37:04 497 2

原创 C语言函数

(1)指定函数的名字,以便以后按名调用。(2)指定函数的类型,即函数的返回类型。(3)指定函数参数名字和类型,以便在调用函数时向它们传递数据。但是对于无参数函数不需要这一项。(4)指定函数应该完成什么操作,即确定函数的功能。

2024-04-20 13:02:51 595

原创 C语言(数组)

可以将数组元素的值进行修改,也是通过数组名和下标进行操作。要访问数组中的特定元素,可以使用数组名和下标来引用该元素。在C语言中,数组是一种用来存储一系列同类型元素的数据结构。在C语言中,数组的访问可以通过下标来实现。通过下标可以访问数组中特定位置的元素。二维数组同一维数组一样,可以变相的理解为一维的数组 即:数组在内存中是连续存放的,从小到大,从低到高。需要注意的是,访问数组时要确保下标的值不超过数组的范围,否则会导致访问越界错误。特点:数组在内存中是连续存放的,从小到大,从低到高。

2024-04-12 21:47:10 808

原创 C语言的循环语句

简而言之,循环语句在C语言中的作用是实现代码块的重复执行,从而简化代码、提高程序的效率、实现条件控制和处理大量数据。

2024-04-09 22:54:31 808

原创 C语关系和逻辑操作符

左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。程序在(a++)为0,导致右边的表达式不执行。题目:判断闰年和非润年?(非0为真,0为加)

2024-04-07 23:13:26 740

原创 C语言分支语句

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。其中,condition是一个表达式,它的结果必须是一个布尔值(true或false)。如果condition的结果为true,则执行if后面的代码块,否则跳过该代码块。此时,condition为假(false),则会输出else,反之则会为真(Ture)

2024-04-05 21:11:48 804

原创 C语言数据类型和变量

在数学中,数值是不分类型的,数值的运算是绝对准确的,例如:78与97之和为175,1/3的值是0.33333333…数学是一门研究抽象问题的学科,数和数的运算都是抽象的。而在计算机中,数据是存放在体单元中的,它是具体存在的。在C语言中,bool类型的使用非常广泛,可以用于条件判断、循环控制、函数返回值等多个方面。特别的讲:变量在创建的时候就给⼀个初始值,就叫初始化。C语⾔中把经常变化的值称为变量,不变的值称为常量。++i 在使用i之前,先使用i的值在加1。i++ 在使用i之前,使用i的值在加1。

2024-04-03 23:49:38 714

空空如也

空空如也

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

TA关注的人

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