自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 KMP && BFPRT && 马拉车(Manacher)

6666666 而

2022-03-26 21:38:13 557

原创 归并、快速、堆、桶排序的一点记录

啦啦啦

2022-03-22 20:33:37 634

原创 Java学习

哈哈。。

2022-03-05 16:42:04 158

原创 程序的编译、宏

程序的一般运行过程: 1.宏常量: #include"stdio.h" #define PI 3.14 #define STR "圆周率约等于" int main() { printf("%s %f",STR,PI); return 0; } 2.宏语句: #include"stdio.h" #define Print printf("hello world!") int main() { Print; return 0; } 3.宏函数: #include"stdi...

2022-02-24 13:13:58 418

原创 C结构体内存对齐

1.结构体的大小: struct S1 { char a1; int a2; char a3; }; int main() { struct S1 s1; printf("%d", sizeof(s1)); return 0; } 你以为的结果是 2*sizeof(char)+sizeof(int),但是结果却是12,那么为什么会这样呢?? 这就引入了我们的结构体内存对齐问题,怎么观察呢?我们可以用offsetof这个函数来观察,这里不详细赘述,说明结构体内存对齐的几个点: 1.首元

2022-02-24 11:51:41 458

原创 动态内存管理

目录 1.动态内存错误: 1.对空指针的解引用: 2.对动态内存开辟的空间越界访问: 3.非动态开辟的内存进行free: 4.对动态内存的某一部分free: 5.对同一块内存进行多次释放: 6.忘记释放: 2.一些笔试题目: 3.柔性数组: 1.动态内存错误: 1.对空指针的解引用: 有些时候我们动态内存开辟失败就会造成空指针的解引用,例如: int main(...

2022-02-22 21:13:27 292

原创 文件操作(hh)

文件打开与关闭操作: fopen():文件打开操作 函数定义:FILE *fopen(char *pname, char *mode) 函数说明:pname是文件名,mode是打开文件的方式 mode:"r" 打开一个已经存在的文件文本,文件不存在则出错 以“r+”的方式打开一个文件,会清空文件的原始内容,重新写入数据 返回值:正常返回:FILE *一个指向文件在内存中的文件信息去的开头 异常返回:NULL,表示打开操作不成功 打开文件的作用是: (1)分配给打开文件一个FILE 类型的文件结构

2022-02-22 17:23:06 397

原创 数据结构(二):part2:队列

目录 1.认识队列: 2.队列实现的选择: 3.预处理: 4.初始化、销毁: 5.出入队: 6.队列大小、是否为空以及获取队列的首尾元素: 7.最近学习数据结构的一点感想: 1.认识队列: 示意图: 与栈类似但是又不同: 1.队列也是只有一个出口; 2.队列是先进先出的规则,所以与栈不同。进出队列不会影响数据的顺序。 2.队列实现的选择: 显然与栈类似,我们可以选择数组或者链表的方式,考虑到队列的先进先出,出数据的时候相当于头删,我们知道数组的头删十分麻烦,所以我们这里选

2022-02-09 14:51:33 801

原创 数据结构(二):part1:栈

1.认识栈: 记住栈的以下特点: 1.先进先出 2.只可从最上面的元素出栈,不能从底下出去。 2.栈的实现: 由上可知,栈可以是多种实现方法,可以是链表,也可以是顺序表,这里我们用顺序表实现: 预处理: #pragma once #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h> typedef int StackDataType;

2022-02-08 20:53:17 747 2

原创 数据结构(一)链表(2:双向带头循环链表)

目录 1.认识双向带头循环链表: 2.预处理: 3.初始化,前插后插: 4.查找删除插入: 5.其他: 1.认识双向带头循环链表: 从结构可以看出,这种链表两个指针,”前驱后继“,而head补位的指针只是一个“哨兵:,里面不用存放有效数据。 与单向链表相比,这种链表可以不用传二级指针,遍历更少,前插后插更加方便,更加适合于存放数据。 2.预处理: #pragma once #include<stdio.h> #include<stdlib.h> #i.

2022-02-07 13:28:08 640 1

原创 数据结构(一):链表(1:单向链表)

1.对链表的认识、预处理: 链表,别名链式存储结构或单链表,用于存储逻辑关系为 "一对一" 的数据。与s顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。 画图认知: 通过指针来找到链表的下一个元素的位置,同时我们创建链表的时候用的也是指针,取名为头指针,头指针也是一种指针,这个时候就会出现对链表认知的一个难点,头指针指向的是这个链表头部位置,头部位置里面有也放着一个指针指向下一个元素,大体如图: 这一点需要好好理解,区分二者的区别 ...

2022-02-06 16:07:54 749

原创 自定义类型、动态内存

位段: 如 struct A{ int _a:2; int _b:5; int _c:10; int _d:30;}; int 是开辟空间的字节数4 :后的数字时变量所占比特位的多少 当第一个开辟空间够用是下一个不会开辟第二个空间 比如本题就只开辟了两个int的空间占8个字节. 32个比特位 位段的内存分配 位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型 位段的空间上是按照需要以4个字节( int )或者1个字节( char

2022-01-23 15:47:44 450

原创 字符串内存函数

#include<stdio.h> #include<assert.h> void* MemMove(void* des, const void* src, size_t n) { assert(des && src); char* p = (char*)des; const char* pp = (const char*)src; if (p <= pp && p >= pp + n) { while (n--) {.

2022-01-21 15:38:09 77

原创 qsort的模拟实现

原型:msdn中介绍qsort是用快去排序实现,我们这里使用冒泡排序实现。 qsort(void*base,size_t length,size_t width,int(*cmp)(void *e1, void *e2)); (void *指针像一个垃圾桶什么都可以往里面装。) base:需要被排序的数组起始地址; length:需要被排序的数组的长度; width:需要被排序数组的每一个元素所占字节数; cmp函数:用户自定义排序类型函数; 实现主体部分:以整形数组为例 qsort部分

2022-01-18 11:08:42 435

原创 2022-1-15 指针

0.#define typedef的区别 { typedef int* INT; #define int* Int; int main() { INT pa, pb; Int pc, pd; return 0; } typedef就相当于是定义了一个新的关键字 INT 它定义的所有变量都是指针类型 而#define只是把int*换成了Int 所以我们得到的pa,pb都是指针变量 而pc是指针变量,pd不是。 } 1.字符指针,贴代码: int main() { char c.

2022-01-15 19:41:16 210

原创 时间复杂度、空间复杂度的计算。

<1.>时间复杂度: 如下代码: for(i = 0;i<n;i++) { for(j = 0;i<n;j++) { count++; } } int a = 10; while(a--) { count++; } 基本操作执行了n*n+10次,但是随着n的增加,10对其影响微乎其微,所以这个程序的时间复杂度是O(n^2),所哟第一条原则:保留老大哥。 for(i = 0;i<n;i++) {

2021-12-11 16:02:57 479

原创 好题11-28

逆序单词并且输出,标点符号不变: eg: I like maomi. output: maomi. like I; 思想:先把单词逆序,再把整个字符串逆序,最后打印出来 代码: #include<stdio.h> #include<string.h> void reverse_string(char* sta, char* end) { while (sta < end) { char temp = *sta; *sta = *end; *end

2021-11-28 21:06:57 169

原创 C语言中数据的存储~

目录 1.整形(char)类型的存储; 2.奇奇怪怪的题目; 3.浮点数的存储与示例; 以下例子都是在32位机器下进行.. 1.整形(char)类型的存储: 整形:在计算机中所有数字都是以二进制的补码形式存储。 原码:正整数的原码就是其二进制数字,其他位往前补0,例如123的二进制为:1111011 由于是在32位下,所以将其用0补齐,变成00000000 00000000 0000000001111011 正整数的 原码 反码 补码 都是一样的!!!。 对于负数而言...

2021-11-27 21:53:47 734

原创 扫雷,简单版

太烂了.. game.h: #pragma once #define ROWS 11 #define COLS 11 #define ROW 9 #define COL 9 #define COUNT 10 #include<stdio.h> #include<stdlib.h> #include<time.h> void game(); void Init_board(char board[ROWS][COLS], int row, int col, ch

2021-11-13 20:58:05 82

原创 c语言数组知识小应用

学习了c语言的顺序、选择、循环分支结构、数组、函数之后,我们一起来做一个小游戏---三子棋。 1-游戏菜单设定: 为了使游戏运行之后就直接答应菜单,选择do-while循环,那故意选错怎么办?这点我们用switch选择结构来规避,代码如下: <1.>菜单 int input = 0; do { menu(); scanf("%d", &input); switch (input) { case 1: game(); break; case

2021-11-08 20:16:43 3194

原创 上路这件事儿

大家好,这里是一枚新加入IT的大一学生,在接下来的日子里会给大家分享我在学习过程中的收获以及感受,在这里先介绍一下我的个人计划: 1.尽快入门C语言并且掌握相关语法,尽量做到扎实,大概两个半月到三个月的时间做完。 2. 接下来就是学习C++,同c语言一样,首先掌握语法,后续的学习过程中再去研究探索C++里面的各种内容。 3.后续便会进入数据结构算法的简单学习,当然在整个过程中,刷题会穿插进行。 4.再者就是MySQL数据库,Linu...

2021-10-16 14:47:49 110

空空如也

空空如也

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

TA关注的人

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