C
文章平均质量分 64
FugLee
在地里面除草,边学 Java -_-
展开
-
C语言系列(8) --- C语言之堆的简单操作实现
一:堆的概念(1)定义如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。(2)性质1.堆中某个节点的值总是不大于或不小于其父节点的值;2.堆总是一棵完全二叉树。(3)小原创 2020-05-28 17:36:18 · 564 阅读 · 0 评论 -
C语言系列(7) --- C语言之链表的实现
一:链表的概念链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的二:链表的结构(1)单链表(2)带头结点的单链表(3)双向链表(4)循环单链表(5)双向循环链表注释:(1)无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。(2)带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代原创 2020-05-21 14:35:02 · 1260 阅读 · 0 评论 -
C语言系列(6) --- C语言程序环境和预处理
(一)程序的翻译环境和执行环境翻译环境:在这个环境中源代码被转换为可执行的机器指令。执行环境:用于实际执行代码。组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库, 将其需要的函数也链...原创 2020-04-20 00:45:52 · 397 阅读 · 0 评论 -
C语言系列(5) --- C语言文件的操作
一:简介(1)程序文件与数据文件***程序文件:***包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。***数据文件:***文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。(2)文件类型根据数据的组织形式,数据文件被称为文本文件或者二进制文件。数据在...原创 2020-04-19 23:42:07 · 236 阅读 · 0 评论 -
C语言系列(1) --- C语言实现经典扫雷小游戏
(一)游戏简介游戏初始界面有两个选择,选项“1”为开始游戏,选项“0”为退出游戏;选择开始游戏之后将会打印出9*9的棋盘,此时系统已经为游戏设置了10个雷,输入坐标之后将会打印出此坐标周围八个位置有几个雷,如果踩到了雷,那么游戏结束,打印出所有雷的位置。(二)游戏实现1.初始化棋盘void InitBoard(char board[ROWS][COLS], int rows, int co...原创 2020-03-28 21:50:46 · 262 阅读 · 1 评论 -
C语言系列(3) --- C程序中结构体的内存对齐
一:为什么存在内存对齐1.平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。总的来说结构体的内存对齐是拿空间来换取时间的做法。二:结构体的内...原创 2020-04-17 21:35:33 · 172 阅读 · 0 评论 -
C语言系列(4) --- C语言动态内存管理
一:malloc函数和free函数(1)这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size为0,malloc的行为是标准是未定...原创 2020-04-19 22:08:44 · 140 阅读 · 0 评论 -
C语言系列(2) --- C语言模拟实现qsort(采用冒泡的方式),strcpy,strcat,strcmp等函数
(1)采用冒泡的方式模拟实现qsort简述回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。模拟实现qsort函数源代码(采用冒泡的方式):#define _CRT_...原创 2020-04-13 22:09:33 · 291 阅读 · 0 评论 -
数据在内存中的存储
1.原码、反码、补码原码:直接将二进制按照正负数的形式翻译成二进制就可以。反码:将原码的符号位不变,其他位依次按位取反就可以得到了。补码:反码+1就得到补码。例如:-10的原码,反码,补码在计算机里面都是以补码的形式存在,正数的原、反、补码都相同。2.举个例子说明整型在内存中的存储:#include <stdio.h>int main(){ int a = 10;...原创 2020-04-08 21:05:17 · 181 阅读 · 0 评论 -
C语言系列(9) --- C语言区分指针数组和数组指针
C语言区分指针数组和数组指针一:指针数组指针数组相对来说比较容易理解,就是一个存放指针的数组,举一个简单地例子。 int* arr[10];//整型指针的数组 char* brr[10];//字符指针的数组 char** crr[10];//二级字符指针的数组二:数组指针(1)首先要明确一点:数组指针是指针,不是数组。顾名思义,数组指针就是能够指向数组的指针,举例来说明:int* parr1[10];int(*parr2)[10];//这两句代码是区分数组指针和指针数组的典原创 2021-09-16 21:05:23 · 208 阅读 · 0 评论 -
栈与队列的实现
一:栈(1)概念一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。(2)栈的操作示意图1.1、2两个个数字的压栈过程栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。(3)进栈示意图(4)栈的代码实现#pragma once#in原创 2020-05-28 22:05:51 · 267 阅读 · 0 评论