- 博客(28)
- 收藏
- 关注
原创 简单认识程序的编译过程
在ANSI C 的任何一种实现中,存在两个不同的环境:本篇文章重点了解程序在编译(翻译)环境会执行的操作。为了可以更清楚的演示过程:这里创建了两个文件:程序的编译也叫做程序的翻译,主要可以分为这四个步骤:预编译、编译、汇编、链接。...
2022-07-07 16:19:25
4400
2
原创 数据结构——堆的实现与应用
我们知道二叉树有两种存储结构:一种是链式结构,一种是数组结构。由于数组结构的特殊性,它通常被用来存储完全二叉树。而数组结构的完全二叉树中又有一个特殊的数据结构,那就是堆。这一节将介绍堆的实现和堆的应用。...
2022-06-23 22:50:58
1025
12
原创 数据结构10——二叉树链式结构的实现
我们知道二叉树有两种存储表示方式:1.数组结构;2. 链式结构。数组表示法用于完全二叉树的存储非常有效,但表示一般二叉树,特别是形态剧烈变化的,存储空间的利用不是很理想。使用链式结构表示,可以克服这些缺点。这一节介绍二叉树链式结构的实现以及二叉树常见的一些基础问题。......
2022-06-21 11:14:01
1191
32
原创 数据结构9——树和二叉树
前面我们学习的都是一对一的数据结构,可现实中还存在许多一对多的结构需要处理。这时就需要用到数据结构树了。树结构广泛存在于现实世界中,公司的组织机构,书的章节等。在计算机应用中,最为人们熟悉的就是磁盘中的文件夹,即文件目录,他包含文件和文件夹。树是n 个节点的有限集合,当n=0时, 该树为空树,否则,树为非空树。这是一个非空树的概念图(AB…H都是树的节点)。注意:在一个树结构中:每一个节点只能由一个父节点,但是可以由多个孩子节点。树和非树节点也可以称为结点。一个节点包含了一个数据项以及指向其他节点的分支 。
2022-06-15 22:27:23
1671
14
原创 数据结构(七)---C语言实现栈和队列
1. 队列和栈都是线性表类型的数据结构,两个结构都可以从一端存入数据,区别是栈结构只能从存入数据的一端取出数据,而队列结构只能从出入数据的另一端取出数据。2. 队列和栈都可以用数组和链表来实现。不管是哪种实现方式,都应该尽可能高效的找到几个特殊的位置(栈顶、队列头、队列尾)。
2022-04-12 23:05:22
2562
14
原创 数据结构6----带头双向循环链表的实现
1.介绍了链表分为哪几类,每一类有哪种特点。2.实现了双向带头循环链表。3.在文章最后对比了链表和顺序表的优缺点。
2022-04-08 20:59:16
3355
16
原创 深入认识数据结构(四)---解决单链表问题
1.解决单链表问题时需要时刻注意指针指向的位置,不能引用空指针。2.带头节点的链表可以让我们在向链表尾部插入元素时可以更方便。3.快慢指针可以帮助我们找到链表中特殊位置的节点
2022-03-31 10:43:04
3155
32
原创 数据结构3--深入了解单向链表的实现
文章目录链表1.从顺序表到链表1.1用指针来实现链表中空间的联系1.2创建一个节点1.3头指针、第一个节点和最后一个节点头指针的创建2.管理链表中的元素2.1访问链表中的各个元素2.1.1打印链表2.1.2在链表中查找数据2.1.3改变链表中某一个节点的值2.2创建新的节点2.3在链表中添加节点2.3.1在链表的末尾添加节点2.3.2在链表的头部添加节点2.3.3在链表的指定位置添加节点在指定位置的前面添加节点在链表的指定位置后面添加节点2.4删除链表中的节点2.4.1删除链表最后一个节点2.4.2删除链表
2022-03-17 23:13:53
970
26
原创 深入认识数据结构(二)---顺序表的实现
文章目录顺序表顺序表中需要实现的功能:顺序表的初始化顺序表的容量向顺序表中添加元素在顺序表的末尾添加元素在顺序表的首部添加元素在顺序表中的指定位置添加元素向顺序表中删除元素删除顺序表末尾的元素删除顺序表首部的元素删除顺序表指定位置的元素销毁顺序表小结顺序表顺序表是线性结构中的一种----顺序储存结构该种结构的占用的是内存中的一块连续的空间(和数组相似)顺序表可以有两种实现方式:一种是用静态数组来实现,#define NUM 100typedef struct SeqList{ in
2022-03-14 00:11:00
1185
24
原创 深入认识数据结构(-)
文章目录前言初识数据结构数据结构的分类线性结构树状结构图结构其他数据结构数据结构与算法算法的效率:时间复杂度时间复杂度的概念大O的渐进表示为什么可以渐进表示大O阶推导方法时间复杂度的计算空间复杂度空间复杂度的概念空间复杂度的计算时间与空间的取舍前言我们的计算机能够进行数值运算,但是由于不同数据之间的联系很少,有的数据之间完全没有任何联系,所以我们很难利用这些单一的数据去处理实际生活中的复杂问题。不过如果我们人为地让这些数据存在特定的联系,那我们就有了一种处理问题的工具和材料。这就和“巧妇难为无米之炊
2022-03-10 23:33:50
1103
34
原创 深入理解C语言的指针(一)
文章目录深入理解指针地址字符指针指针数组数组指针数组指针的定义:**“&数组名”和“数组名”**数组指针的使用一维数组传参二维数组传参一级指针传参二级指针传参函数指针什么是函数指针怎样使用函数指针函数指针数组函数指针是什么函数指针的使用深入理解指针指针学习是C语言中十分重要的一个环节,利用指针,学会了指针的知识后,我们会对系统的内存有更为清晰的认识,也对更为底层的程序,这样就是C语言经久不衰的原因。地址了解指针之前我们要了解地址内存被划分为以字节为单位的空间每一个字节都有一个编号,这
2022-03-07 22:44:25
5601
28
原创 深入了解C语言中的文件操作
文章目录文件操作为什么使用文件?什么是文件?:指的是磁盘上面的文件文件名:一个文件要有为一个文件标识,以便用户识别和辨认,文件的分类文件指针文件的打开与关闭`fopen`与`fclose`文件的读与写了解输入与输出:文件的顺序读写:`fputc`与`fgetc`使用`fputc`写文件使用`fgetc`读文件练习:文件的拷贝文件指针的偏移`fgets`与`fputs`函数`fputs``fgets``fprintf`与`pscanf`函数`fprint``fscanf`附:`sprintf`与`sscanf
2022-03-03 22:47:56
1356
22
原创 C语言 :学习动态内存分配
文章目录C语言动态分配为什么存在内存分配?动态内存函数的介绍`malloc``free``free`函数的**作用原理**是:使用后将指针赋为`NULL``calloc`运用一次`calloc`函数`realloc`当第一个参数为空指针时:当第一个参数不为空指针的时候:常见的动态内存分配错误对空指针的解引用操作对动态开辟空间的越界访问对非动态内存使用free释放对同一块动态内存进行多次释放忘记释放动态空间柔性数组柔性数组的特点一个如何开辟包含柔性数组成员的结构柔性数组的优势C语言动态分配为什么存在内存分
2022-02-27 13:58:24
1763
20
原创 C语言中的自定义类型:结构体,枚举,联合
文章目录前言1.结构体结构体的基础知识:结构的声明和变量的创建:结构体在变量在不同位置创建的区别特殊的声明使用typedef可以更方便的创建变量结构体变量的初始化:计算结构体的大小:**结构体内存对齐****C语言中结构体类型内存对齐的规则:**修改默认对齐数结构体作为函数的参数需要注意2. 位段什么是位段位段空间大小的计算2.联合计算联合的大小:联合的初始化简单的运用一下联合3.枚举枚举类型的定义枚举中常量的取值枚举的优点总结前言要精确描述一个事物,需要得到多方面的数据。在日常生活中,数据总是成组的出
2022-02-23 18:19:22
956
19
原创 数据在内存中的储存
文章目录数据的储存数据类型类型的基本归类整形有符号数和无符号数有符号数无符号数是否char 等于signed char呢?对于有符号数字和无符号数字的打印浮点型构造类型(自定义类型)指针类型空类型整形在内存中的存储原码,反码,补码正整数负整数大小端字节序设计一个小程序判断当前机器属于哪种字节序储存时数据发生截断以及整型提升例题1例题2浮点型在内存中的存储浮点型和整形在内存中的储存方式不同IEEE754对于有效数字M和指数E有一些特别的规定:拿出这些储存的数据(三种情乱)情况一:E不全为0或不为全1情况二:E
2021-12-06 17:53:07
931
10
原创 C语言数组的简单了解
文章目录数组数组的介绍数组声明例子数组声明的格式初始化数组完全初始化:不完全初始化:字符串与字符的初始化数组的储存与下标数组元素的输入与输出数组越界二维数组的创建与初始化二维数组的创建二维数组的初始化二维数组的储存二维数组行可以省略,但是列不能省略数组与函数数组元素作为函数的参数数组名作为函数的参数数组数组的介绍数组是数据类型相同的一系列元素,在使用数组时,需要先声明数组,根据这些信息编译器就可以成功创建数组数组声明例子float arr[30];//包含30个float类型的元素的集合char
2021-11-13 17:34:52
963
6
原创 C语言实现扫雷游戏
文章目录扫雷游戏work.c的内容1.为什么需要设置两个除名字外其他属性都相同的数组:2.为什么采用是字符数组而不是整形数组3.为什么不在直接在设置数组大小的时候设置为九行九列game.c的内容1.初始化数组的函数:init_board();2.布置雷的函数:set_mine();3.打印棋盘的函数:display();4.玩家操作的函数(包含了游戏何时结束):sweeper();game.h的内容完整代码网址扫雷游戏规则:根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。
2021-11-11 22:17:24
3841
4
原创 用C语言实现三子棋
文章目录三子棋work.c的设置game.h的内容设置game.c的设置1.棋盘的内容1.棋盘以及棋盘的初始化2.打印棋盘3.下棋步骤玩家下棋电脑下棋4.判断是否胜利三子棋三子棋的规则是:在3x3的棋盘里,双方轮流下子(以X和O表示),先将3个子连成一条线(横竖斜都可以)的一方获胜下面是三子棋C语言实现的几个问题:1.要想实现三子棋,我们需要一个棋盘,然后就是棋盘的内容。2.下棋的时候需要判断是否该位置合法。3.玩家和电脑的下棋逻辑不同,玩家需要手动输入,电脑是自己下棋4.每下一步棋都需要判断
2021-11-10 20:44:06
4421
原创 函数的简单了解
文章目录函数函数是什么函数的分类库函数自定义函数函数名返回值类型有返回值无返回值函数参数实际参数形式参数函数的声明与 定义函数调用的数据传递传值调用传址调用函数运用的练习函数的嵌套调用与链式访问嵌套调用链式访问函数递归关于函数递归的练习函数使用函数可以提高代码的可读性与执行力函数是什么函数就是功能,每个函数用来完成特定任务的独立程序代码单元,功能的名字就是函数的名字一般会有输入参数与返回值函数的分类函数分为库函数与自定义函数(重点介绍自定义函数)库函数C语言提供给我们可以直接使用的函数为
2021-11-08 19:49:27
258
1
原创 循环与分支
分支与循环都需要用到表达式:表达式部分可以是关系表达式,逻辑表达式,以及数值表达式,输入表达式时需要注意逻辑死否清晰,是否表达式的内容与自己想象中的判断一致。分支(选择)if语句形式1.:(没有else部分)if (expression){ statement; }形式2.:(有else子句部分)if (expression){ statement;}else{statement; }形式3.:(在else部分嵌套了多个if语句)if(expres
2021-10-30 14:52:10
527
1
原创 关于循环的一些练习题
1.编写一个程序;创建包括26个元素的数组,并在其中储存26个小写字母,然后打印数组的内容结果:代码:#include<stdio.h>int main(){ char arr[26] = { 0 }; int a = 0; for (a = 0; a < 26; a++) { arr[a] = 'a'+a; printf("%c\t", arr[a]); } return 0;}//方法二://#include<stdio.h>//i
2021-10-30 13:06:50
740
原创 C语言的简单了解
C语言是一门计算机语言,用于和计算机交流。学习C语言需要了解这些名词:数据类型、变量和常量、字符串、转义字符、选择与循环、函数数组、操作符、关键字、预处理指令、指针、结构体。下面举一个例子介绍一个简单的C语言程序://hello world#include<stdio.h>int main(){printf("hello world");//打印hello wordreturn 0;}这是一个简单的C语言程序,里面包括了:引用的头文件:stdio引用头文件的格式是#in
2021-10-25 20:44:35
732
2
原创 循环的简单了解
循环循环关系运算符:赋值运算符:什么是真?逗号表达式:下面开始介绍三种循环:**1.while循环**例子:加法:终止while循环:用if使while停止改变表达式的值:不满足条件直接无法执行循环的情况while里面的表达式可以比较字符,但是不能比较字符串:*关系运算符也可以比较浮点数关于真假值:真为1,假为0*对于下面这个代码循环会一直进行*/布尔类型:2. **do while**3.**for循环**利用for循环创造一个立方表for的灵活性:1.可以使用递减运算符来递减计数器同样的程序用while
2021-10-20 14:40:12
1563
12
原创 **关于上传代码到gitee显示的几个问题。*
关于上传代码到gitee显示的几个问题。用到的软件1.git2.tortoisegit**问题一1.Incorret username or password用户名或者密码错误**出现这个情况应该是用户名或者密码出错了,更改的方式:第一步:在控制面板中找到“用户账户”—>“凭据管理器”–>Windows凭据”...
2021-10-18 09:30:24
320
1
原创 C语言笔记
C语言笔记.1fn+f5运行 fn+f10一步一步运行显示结果: 项目名称–>属性–>链接器–>系统–>子系统–>控制台()\n是换行作用main函数有且只有一个,是程序开始的地方int是整形的意思 main前面的int标识main函数调用返回的一个整型值数据类型:让我们内存使用率更高char: //字符类型short //短整型int //整型long //长整型long long //更长的整型
2021-10-16 15:45:55
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人