自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言 32个关键字

C语言32个关键字:数据类型相关: 内建类型:(7) char short int long void float double char 声明字符型变量或函数 short 声明短整型变量或函数 int 声明整型变量或函数 long 声明长整型变量或函数 void 声明函数无返回值或无参数,声明无类型指针 float 声明浮点型变量或函数 ...

2021-10-28 17:24:04 284 4

原创 PAT 乙级 C实现 个人记录用(暂停更新)

PAT乙级 1001 害死人不偿命的(3n+1)猜想PAT乙级 1002 写出这个数PAT乙级 1003 我要通过!PAT乙级 1004 成绩排名PAT乙级 1005 继续(3n+1)猜想PAT乙级 1006 换个格式输出整数PAT乙级 1007 素数对猜想PAT乙级 1008 数组元素循环右移问题PAT乙级 1009 说反话PAT乙级 1010 一元多项式求导PAT乙级 ...

2021-10-27 09:56:59 189

原创 C++ 学习笔记 2022年1月21日

一、C++介绍 本贾尼.斯特劳斯特卢普,1979年4月份在贝尔实验室在分析UNIX系统的内核流量时,特别希望有一款更加模块化的工具,于1979年10月份开始着手开发改进 一款新的编程语言,在C语言的基础上增加了面向对象机制,1983年完成了C++的第一个版本 C++与C的重要的区别: 1、C++完全兼容C的所有内容 2、支持面向对象的编程思想 3、支持运算符重载、函数重载的编译时多态机制 4、支持泛型编程、模板编程.

2022-02-11 17:42:22 379

原创 Linux环境编程 学习笔记 2022年1月21日

线程竞争一、基本概念 竞争与同步: 同一个进程中的线程能够共享进程中的绝大多数资源,当它们进行随意的竞争时就会导致共享的资源被破坏、脏数据、不完整、不一致等问题 通过一些方法让线程在竞争资源时相互协同,避免出现数据不完整、不一致等问题,这种就叫线程同步 原子操作: 在操作的过程中不会被任何情况打断的操作,叫做原子操作 临界区与临界资源: 被多个线程同时访问的代码叫做临界区,被多个线程同时访问的资源叫做临界资源.

2022-01-21 17:17:25 747

原创 Linux环境编程 学习笔记 2022年1月20日

线程管理一、基础概念 1、线程是进程的执行线路,它是进程内部的控制序列,或者说线程是它所在进程的一部分(进程是一个资源单位,线程是进程的一部分,是真正负责执行的) 2、线程是轻量级的,没有它自己独立的代码段、数据段、bss段、堆、环境变量、命令行参数、文件描述符、信号处理函数、当前目录等资源 3、线程有自己独立的栈内存、线程ID、错误码、信号掩码等 4、一个进程可以包含多个线程(多个执行线路),但是至少有一个线程,这个线程是主线程 5、ps -T -p [pid] ...

2022-01-20 16:52:36 273 1

原创 Linux环境编程 学习笔记 2022年1月16日

多路复用: 使用一个进程(且只有一个主线程)同时监控若干个socket文件描述符的读写,这种读写模式叫做多路复用 多用于TCP服务端,用于监控若干个客户端的连接和数据的接收 优点:不需要频繁地创建进程、销毁进程、从而达到节约内存资源、时间资源,也能避免进程之间的竞争、等待 缺点:单个客户端的任务不能耗时太长,否则其它客户端就会感知到 适合并发量高、任务量短小的情景,例如:Web服务器select: fd_set 是文件描述符的集合,是要通过以下函数进行操...

2022-01-17 11:19:53 169

原创 Linux环境编程 学习笔记 2022年1月14日

网络通信 底层遵循TCP/IP协议,在系统中以socket接口方式呈现基于TCP协议的网络通信模型: 服务端 客户端 创建socket对象 创建socket对象 准备通信地址(本机ip)+端口号 准备通信地址(目标公网ip)+端口号 绑定socket和通信地址 ...

2022-01-16 10:40:40 114

原创 Linux环境编程 学习笔记 2022年1月13日

信号量: 基础概念: 由内核维护并共享的一个"全局变量",用于记录共享资源的数量,限制进程对共享资源的访问 信号量是一种数据的操作锁,本身是不具备数据交换功能,而是通过控制其它的通信资源来实现进程间协调通信 1、若信号量的值大于0时,说明可以使用资源,需要将信号量-1,再使用资源 2、若信号量的值等于0时,说明没有资源可以使用,此时进程会进入休眠,直到信号量的值大于0,进程就会自动唤醒,执行步骤1 3、当资源使用完毕,需要将信号量的值+1,其它...

2022-01-13 16:51:17 103

原创 Linux环境编程 学习笔记 2022年1月8日

进程的正常退出: 1、在main函数中执行 return n,该返回值值可以被父进程接收到的,在main函数中与exit几乎等价的 2、进程调用了exit函数,该函数是标准库函数 void exit(int status); 功能:在任何时候调用此函数都可以结束进程 status:结束状态码 EXIT_SUCCESS EXIT_FAILURE 效果与...

2022-01-08 18:50:56 672

原创 Linux环境编程 学习笔记 2022年1月6日

信号处理:基本概念: 1、中断 当进程接收到信息后中止当前正在执行的进程,转而去执行其它任务,等其它任务完成后再返回,这种执行模式叫做中断模式。 中断分为硬件中断和软件中断。 2、信号 是一种软件中断,由操作系统发出,进程接收后会执行相应的操作 3、常见的信号 kill -l 显示出所有的信号 SIGINT(2) ctrl+c 终止 SIGQUIT(3) ctrl...

2022-01-06 12:05:13 112

原创 Linux环境编程 学习笔记 2022年1月5日

二、文件属性 int stat(const char *path, struct stat *buf); 功能:根据文件的路径获取文件的属性 buf:存储文件属性的结构体指针,是一个输出型参数 int fstat(int fd, struct stat *buf); 功能:根据文件描述符获取文件的属性 int lstat(const char *path, struct stat *buf); 功能:获取软连接文件的文件属性 struc.

2022-01-05 17:51:03 134

原创 Linux环境编程 学习笔记 2022年1月4日

一、系统调用(API) 系统调用就是操作系统提供的一些功能给程序员使用,这些功能已经被封装成C函数的形式,但它们不是标准C的一部分 一般应用程序运行在用户态(使用的是[0~3G)的虚拟内存),系统调用时工作在内核态(使用的是[3~4G)的虚拟内存) 常用的标准库函数绝大部分时间运行在用户态,底层偶尔也会调用系统调用进入内核态 系统调用时运行就是内核代码,内核代码属于内核的一部分,该代码的外部接口以函数形式定义在共享库中(linux-gate.so ld-linux...

2022-01-05 09:09:33 130

原创 Linux环境编程 学习笔记 2021年12月31日

错误处理: 1、通过函数的返回值表示错误 a、合理值表示成功,非法值表示失败 例如:计算大小、查找 b、指针类型的返回值NULL或者0xFFFFFFFF表示失败 例如:malloc mmap c、返回0表示成功,-1表示失败,一般都是系统函数 d、永远成功 例如:printf 2、通过影响全局的错误编码 errno ,定义在 errno.h中 char *strer...

2021-12-31 11:47:38 148

原创 Linux环境编程 学习笔记 2021年12月30日

程序员必备技能: 一门编程语言:C语言、C++ 数据结构与算法:表、树、图、查找、排序、STL 操作系统:UNIX/Linux系统 网络编程:TCP/IP(Socket技术、TCP、UDP、FTP协议) 数据库:MySQL 界面设计:Qt课程介绍: 环境介绍 内存管理 文件管理 信号处理 进程管理 进程通信 线程管理 线程同步 网络编程UNIX系统介绍: BCPL-&gt...

2021-12-30 10:24:10 166

原创 数据结构与算法 学习笔记 2021年12月29日

归并: 先把一组数据拆分成单个的个体,然后然后按照从小到大的顺序两两合并成新个体,合并结束后需要复制到临时空间中,继续对临时空间的新个体两两合并,合并后的结果又复制回原空间中,此过程反复进行,最后的有序结果还需要重新赋值给原空间 归并排序使用了额外的内存空间,因此避免了数据之间交换的耗时,但是是一种典型的以空间换时间的算法 时间复杂度:O(nlogn) 稳定的堆: 把数据当作一棵完全二叉树,然后树中的数据调整成大根堆,然后把根...

2021-12-29 16:24:30 584

原创 数据结构与算法 学习笔记 2021年12月28日

哈希查找: 把数据经过哈希函数计算出该数据在哈希表中的位置,然后标记每个位置,方便之后的查找,它的时间复杂度最好能达到O(1) 注意:该算法有很大的局限性,需要额外的存储空间,空间复杂度较高,是一种典型的以空间换时间的算法,而且不适合浮点型、字符型数据。 哈希函数设计: 直接定址法:直接把数据作为哈希表的下标进行标记 数据分析法:对数据进行分析从而设计哈希函数 ...

2021-12-28 18:19:45 252

原创 数据结构与算法 学习笔记 2021年12月27日

图的遍历方式: 深度优先遍历(DFS): 也叫深度优先搜索,对每一个可能的分支路径深入到不能再深入为止,而且每个顶点只能访问一次 广度优先遍历(BFS): 也叫广度优先搜索,对每个顶点的所有分支路径进行访问,每个顶点只访问一次,类似于二叉树中的层序遍历,必须配合队列邻接表: 边: 顶点下标 下一条边的地址 顶点:...

2021-12-27 15:53:30 229

原创 数据结构与算法 学习笔记 2021年12月24日

红黑树:R-B树 也是一棵自平衡的有序二叉树,但它的平衡不是根据子树的高度来调整的,而是给每个节点设置颜色,通过颜色的关系达到平衡红黑树的特性: 1、每个节点或者是黑色或者是红色 2、根节点一定是黑色 3、每个叶子节点(NULL)是黑色 【这里的叶子节点指的是空的叶子节点(NULL)】 4、如果一个节点是红色,则它的子节点必须是黑色 不能有两个连续的红色 ...

2021-12-27 09:03:18 201

原创 数据结构与算法 学习笔记 2021年12月23日

平衡二叉树: 前提是有序的二叉树,它的左右子树高度差不超过一,所有的子树都满足这个条件 如果一个有序二叉树呈现或者接近单支状,它的查找效率越接近单链表,效率越低,因此只有达到平衡状态时,它的查找效率才最高 由于节点的值是受限的,因此只能进行调整,而不能直接修改 二叉树不平衡的四个基础原因: x ...

2021-12-24 09:28:33 169

原创 数据结构与算法 学习笔记 2021年12月22日

作业: 1、把一棵二叉树转换成它的镜像树struct TreeNode* Mirror(struct TreeNode* pRoot ) { // write code here if(pRoot) //判断边界条件,是否为空树 空树递归结束 { struct TreeNode* temp;//定义一个缓冲指针 temp=Mirror(pRoot->left);//缓冲并镜像左树 pRoot->left...

2021-12-23 14:13:48 253

原创 数据结构与算法 学习笔记 2021年12月21日

有序二叉树: 1、节点没有相等的值,左子树的数据一定小于根、根一定小于右子树 2、左子树的数据一定小于根、根一定小于或等于右子树 3、左子树的数据一定小于或等于根、根一定小于右子树 都称为有序二叉树、二叉排序树、二叉搜索树、或者二叉查找树 注意:由于这种树的节点需要频繁地插入、插入,因此不适合采用顺序存储 注意:由于这种树的中序遍历就是数据从小到大排序,所以有序二叉树也是一种排序算法,同时对有序二叉树中数据的查找...

2021-12-21 17:40:25 357

原创 数据结构与算法 学习笔记 2021年12月20日

复习:树型结构 1、树的基本概念 一种具有层次(一对多)关系的数据结构 有且仅有一个没有前趋的节点,称为根节点 注意:树型结构具有递归性(树中有树) 2、树的表示方法 倒悬树、凹凸法、嵌套法 3、树的专业术语 节点:组成树的基本元素,同时它也是一棵树 节点的度:该节点子树...

2021-12-20 17:57:47 235

原创 数据结构与算法 学习笔记 2021年12月17日

6、通用链表 节点: void* ptr; //数据域 指针域 链表: 头节点 节点数量...

2021-12-17 18:03:33 128

原创 数据结构与算法 学习笔记 2021年12月15日

4、双向链表 一般双向链表会设计成循环链表,也叫双向循环链表 节点: 前趋指针 数据域 后继指针 双链表数据域: 头节点 节点数量 双向链表的特点: 1、从任意节点可以遍历整个链表 2、从任意节点,可以根据具体情况选择从前到...

2021-12-15 19:39:04 425

原创 数据结构与算法 学习笔记 2021年12月14日

2.静态链表 节点: 数据域 游标 静态链表的节点存储在连续的内存中,通过游标来访问下一个节点 使用场景:在没有指针的编程语言中使用的链表 特点:这种链表在插入、删除时只需要修改游标的值,而不需要申请、释放内存,也能达到链表的效果 缺点:牺牲了随机访问的效果,也没有全部实现指针链表带来的全部效果3、循环链表 链表的最后一个节点的next不再指向NU...

2021-12-15 09:05:17 216

原创 数据结构与算法 学习笔记 2021年12月13日

复习: 1、什么是数据结构 是专门研究数据关系和操作的学科,而非计算方法数据结构+算法=程序 2、逻辑结构和物理结构: 逻辑结构: 集合:除了同处于一个集合外,数据之间没有任何关系 表:数据之间存在一对一的关系 树:数据之间存在一对多的关...

2021-12-13 18:09:51 245

原创 数据结构与算法 学习笔记 2021年12月10日

功能受限的表:栈:只有一个进出的出入口的表结构,先进后出,FILO顺序栈: 数据项:存储元素的内存首地址栈的容量栈顶位置运算: 创建、销毁、入栈、出栈、栈满、栈空、栈顶注意: 栈顶指向顶部的第一个数据,称为满增栈 ...

2021-12-13 09:09:30 82

原创 数据结构与算法 学习笔记 2021年12月9日

一、什么是数据结构 1、数据结构的起源 1968年,美国高德纳教授,《计算机程序设计艺术》第一卷《基本算法》出版,开创了数据结构与算法的先河 数据结构是一门研究数据之间的关系和操作的学科,而非计算方法 数据结构+算法=程序沃斯凭借这个观点写的论文,获得图灵奖,这句话展示了程序的本质。 2、数据结构的基本概念 数据:所有能够输入到计算机...

2021-12-09 18:26:30 89

原创 C语言 学习笔记 2021年12月1日

main函数的参数: 是为了获取命令行附加的参数 argc 代表参数的个数 包括./可执行文件名 argv 每个字符串参数的首地址 注意:./a.out 一定是第一个参数int main(int argc, char *argv[]){ if (argc != 3) { printf("pls input 3 parameter\n"); return -1; } FILE *frp=NULL; FILE *fwp=NULL; frp = f.

2021-12-01 15:16:01 961

原创 C语言 学习笔记 2021年11月30日

枚举: 枚举是一种数据类型,把可能出现的值一一罗列出来,并给其起有意义的名字,如果给该类型的变量赋其他的数值则认为是非法的(愿望)enum Direction{ UP = 183, DOWN = 184, RIGHT = 185, LEFT = 186, };枚举可以看作是值受限的int类型,但C编译器为了效率不会检查,所有C语言的枚举变量可以当做int类型使用,一般会直接使用起好名字的枚举成员(锦上添花)如果不...

2021-11-30 20:29:58 125

原创 C语言 学习笔记 2021年11月29日

结构: 结构是由程序员自己设计的一种数据类型,用于描述一个事物的各项信息,由若干个不同的基础数据类型组成。 设计: struct 结构名 { 类型 成员名; ... }; 定义结构变量: struct 结构名 结构变量名; 注意:定义结构变量时,不能省略struct 定义结构变量并初始化:...

2021-11-29 18:41:33 532

原创 C语言 学习笔记 2021年11月26日

多文件编程项目:2048游戏: 文件安排: main.c game2048.cgame2048.h direction.cdirection.h

2021-11-29 14:10:48 163

原创 C语言 学习笔记 2021年11月25日

复习:1、文件包含 #include 把一个头文件导入到当前文件中 #include <> #include "" 系统是通过环境变量指定头文件的加载路径 还可以通过编译参数 -I /path 指定头文件的加载路径2、宏常量 #define 宏名 字面值数据 如果在代码中使用了宏,在预处理时会把所有的宏替换为宏名后面的字面值数据 优点:提高代码可读性、提高可扩展性、提高安全性、还可以与case配合...

2021-11-26 09:10:39 131

原创 C语言 学习笔记 2021年11月24日

预处理指令: 程序员所编写的代码并不能被真正的编译器编译,需要一段程序把代码翻译一下 翻译的过程叫预处理,负责翻译的程序叫做预处理器,被翻译的代码叫做预处理指令,以#开头的代码都是预处理指令 查看预处理过程 gcc -E code.c 把预处理的结果显示到终端上 gcc -E code.c -o code.i 把预处理结果存储到code.i预处理文件中 预处理指令的分类: #include 文件包含 ...

2021-11-25 09:55:08 129

原创 C语言 学习笔记 2021年11月22日

输入缓冲区: 程序并不会立即获取屏幕上输入的数据,而是按下回车键后程序才从输入缓冲区读取数据 1、当需要读取的是整型或者浮点型时,而输入缓冲区中的数据是字符或符号时,此时读取会失败,数据会残留在输入缓冲区中,就会影响接下来的所有数据的读取 解决办法: 判断scanf的返回值,如果返回值小于要接受的变量个数,则先清空输入缓冲区,再重新scanf接收,知道全部成功接受为止 2、fgets可以指定读取size-1个字符,如果有多余的会残留在输...

2021-11-24 11:07:16 147

原创 C语言 学习笔记 2021年11月19日

复习:常见笔试面试题: 1、堆内存与栈内存的区别 是什么、有什么用、优缺点、注意事项 谁管理、大小、使用、安全性 2、堆内存越界的后果 脏数据 超过33页产生段错误(与编译环境相关) 破坏malloc的维护信息,影响下一次的malloc、free 3、什么是内存泄漏、如何定位内存泄漏 ...

2021-11-19 12:00:05 575

原创 C语言 学习笔记 2021年11月18日

复习:指针数组与数组指针: 指针数组:成员是指针的数组 int* arr[长度]; 数组指针:专门指向数组的指针 int (*arrp)[长度];指针与数组名区别: 数组名就是数组的首地址,也是一种特殊的指针,它与数组的内存之间是映射关系,是常量,不能修改 指针与内存之间是指向关系,可以修改指向 数组作为函数的参数时就会蜕变成指针,所以长度丢失,需要额外的参数...

2021-11-18 17:05:48 581

原创 C语言 学习笔记 2021年11月16日

指针数组与数组指针: 指针数组: 是由指针变量组成的数组,它的成员都是类型相同的指针变量 int *arr[10] 数组指针: 专门指向数组的指针 int (*p)[长度] 注意:一般在使用堆内存时,可能会使用它们来定义二维数组指针与数组名: 数组名就是一种特殊的指针,它是常量,不能修改它的值,它与数组的内存首地址...

2021-11-16 17:22:48 885

原创 PAT乙级 1059 C语言竞赛(C实现)

1059 C语言竞赛 (20 分)C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶! 2、其他人将得到巧克力。给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。输入格式:输入第一行给出一个正整数N(≤104),是参赛者人数。随后N行给出最终排名,每行按排名顺序给出一位参赛者...

2021-11-15 19:19:09 73

原创 PAT乙级 1057 数零壹(C实现)

1057 数零壹 (20 分)给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0、4 个 1。输入格式:输入在一行中给出长度不超过105、以回车结束的字符串。输出格式:在一行中先后输出 0...

2021-11-15 19:16:21 525

空空如也

空空如也

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

TA关注的人

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