- 博客(12)
- 收藏
- 关注
原创 初阶数据结构之双向链表详解
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表,因此,本节的双向链表也是双向循环链表。在List.h中定义链表结点,data的类型设为DataType,方便以后使用其他类型的数据。}ListNode;
2024-05-18 16:59:05
1346
1
原创 初阶数据结构之单链表详解
在实现单链表的操作之前,我们应该把结点定义出来,已知结点内存储结点数据(data)和下一个结点的地址(即一个指向下一个结点的指针),因此我们可以用结构体来定义结点。//定义结点//数据域//指针域}SLNode;//定义结点//数据域//指针域}SLNode;//单链表初始化//单链表的新增节点(把新增的数据转换为结点结构体类型)//单链表尾插结点//单链表头插结点//打印单链表//单链表尾删结点//单链表头删//单链表查找数据//单链表删除指定位置结点。
2024-05-08 14:35:35
1207
5
原创 顺序表实现简易通讯录
注意:我们在"SeqList.h"头文件中调用了头文件"contact.h",并且把"contact.h"中的People结构体重命名为了SLDataType类型,也是由于现在顺序表中存储的都为联系人类型的数据。因此,在进行具体的实现操作之前,要在"contact.h"头文件中声明struct SeqList结构体,这样我们才可以在contact.h内使用struct SeqList*类型的参数。在通讯录中删除一个联系人,其实就是在顺序表中删除一个People类型的数据。
2024-04-30 19:12:23
734
5
原创 C语言逻辑操作符和(移)位操作符详解及运算符优先级
在讲解操作符之前需要了解进制转换和原码、补码、反码的知识。在C语言中,操作符可以分为以下几类:由于其中大多数操作符过于简单,本章不再介绍,本章主要讲解其中比较难的逻辑操作符和(移)位操作符。逻辑运算符是来连接表达式并且判断该语句的“真假”。代码示例:三:位操作符(重点+难点)位操作符简而言之就是对二进制位(补码)进行操作的操作符 (正数的原码与补码相同) 5的补码:00000000000000000000000000000101 7的补码:00000000000000000000000
2024-04-27 00:28:08
2946
5
原创 初阶数据结构之顺序表详解
线性表的长度,即所含元素的个数,用n表示,且n可以等于零,表示线性表是一个空表。此外,线性表可以是有序的,也可以是无序的。另外,声明也允许将程序的不同部分分开编译,因为在一个文件中声明了一个变量或函数后,在其他文件中可以使用这个声明而无需重新定义。实现动态顺序表的实现之前我们需要创建2个源文件分别进行顺序表功能的实现和功能的测试,和一个头文件用于函数的声明和顺序表的创建。数据结构的研究还涉及到为这种结构定义适当的运算,并设计出相应的算法,确保经过这些运算后得到的新结构仍保持原来的结构类型。
2024-04-26 01:01:54
896
2
原创 (C语言)字符函数和字符串函数(超级详解)
在不同的系统和C语言标准库的实现中都规定了一些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语言程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动 的时候errno是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会讲对应 的错误码,存放在errno中,而⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是 有对应的错误信息的。如果要复制的*source的部分有\0,就把\0复制进去,之后就提前结束,即使没复制到第n个字符也是。
2024-04-24 00:21:26
899
3
原创 C语言程序编译和链接
编译原理是计算机科学中的一个重要分支,主要研究如何将高级语言编写的源代码转换成计算机能够直接执行的机器码。C语言作为一种广泛使用的高级编程语言,其编译过程同样遵循编译原理的基本框架。编译过程通常可以分为以下几个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。下面我们将详细介绍C语言编译原理与链接过程。
2024-04-21 01:30:17
673
6
原创 (C语言)文件操作(万字超详解)
1:在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。程序文件:程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows 环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件,用来提供数据或者存储数据。如:用函数操作文件(打开、输出等等操作),该文件就是数据文件。并且本博客内容讨论的都是数据文件。
2024-04-19 07:00:00
780
2
原创 C语言动态内存分配详解(malloc/calloc/free/realloc)以及常见错误
当我们在计算机上打开一个程序,或者创建一个文件时,计算机需要为其分配一定的内存空间来存储程序代码和数据。内存分配是指计算机系统将可用的内存空间分配给不同的程序或文件,以让它们能够在计算机上运行或存储。内存分配是计算机操作系统中的一项重要工作,它涉及到内存的申请、分配、使用和释放等一系列操作。不同的程序或文件需要的内存空间大小不同,因此内存分配需要按需分配,以充分利用计算机的内存资源。
2024-04-14 00:14:07
1927
2
原创 (c语言)结构体内容详解
结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义 。定义:结构体的定义如下所示,struct为结构体关键字,tag为结构体的名字,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。声明:在上面的声明中,第一个和第二个声明被编译器当作两个完全不同的类型,一个是struct一个struct SIMPLE,因此即使他们的成员列表是一样的,也是不同的。如果令t3=&
2024-04-02 22:07:30
1017
1
原创 浮点数在内存中的存储
以32位浮点数为例,留给M只有23位,将第⼀位的1舍去以后,等于可以保 存24位有效数字。但是,我 们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上 ⼀个中间数,对于8位的E,这个中间数是127;思考一下,E在存进内存时加上了127后还全为0,可以得出原先的E为1-127或1-1023才为真实值,此时可以得知原数小于1,且是一个极其小的数,此时,有效数字还原时不再加1,而是还原成0.xxxxxxxxxxxx的小数,来表示+_0,以及接近+_0很小的数。
2024-03-30 17:24:14
759
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人