![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C
文章平均质量分 88
介绍C语言
TauCeti0207
加油!!!
展开
-
练就基本功之栈与队列【数据结构】【C语言实现】
0.前言🐕hello 大家好啊,今天学习的是栈和队列。🐱🐱🐱话不多说,直接进入正题。1.栈🐱栈(Stack):是只允许在一端进行插入或删除的线性表。栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。遵循LIFO原则。(Last In First Out)注意先入后出是相对而言的。举个例子若进栈序列为 1,2,3,4 ,进栈过程中可以出栈,则下列不可能的一个出栈序列是(C)A 1,4,3,2B 2,3,4,1C 3,1,4,2D 3,4,2,1数据插入和删除的一端原创 2022-03-29 19:23:52 · 1596 阅读 · 12 评论 -
练就基本功之双向带头循环链表【数据结构】【C语言实现】
0.前言hello 大家好啊,好久不见。最近几天偷懒了,去补学校的课了,跟不上了/(ㄒoㄒ)/~~今天复习的是双向带头循环链表。👉戳我了解上一篇单链表👉戳我了解上上篇顺序表👉戳我了解复杂度🐱🐱🐱话不多说进入正题。1.双向带头循环链表🐺**乍一看,双向带头循环链表怎么这么复杂啊?**实现起来一定巨麻烦吧?非也非也。其结构虽然复杂,但是操作反而简单,这也正是其结构优势。头结点(也叫哨兵位节点)是多开辟的节点,方便链表的一系列操作。**注意:**有些书上也许会说让头结点存储链原创 2022-03-27 19:52:42 · 956 阅读 · 19 评论 -
一文梳理二分查找算法【算法】【C语言】
文章目录0.前言1.故事分享:book:2.左闭右闭3.左闭右开4.错误示范1.找不到2.死循环5.总结0.前言二分思想十分容易理解,但是二分法边界处理问题大多数人都是记忆模板,忘记模板后处理边界就一团乱。之前我也凭借记忆书写,没彻底理清二分的边界关系,这次就此机会理清。记得某本书里有句经典发言:90%的程序员不能完全正确的写一个二分查找算法。1.故事分享📖有一天小明到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把小明拦下,要检查一下哪本书没有登记出借。小明正准备把每一本书在.原创 2022-03-05 23:04:06 · 602 阅读 · 4 评论 -
15.程序环境和预处理【C语言】
每一个源文件都会被编译成.obj文件,最后所有的.obj文件+链接库链接在一起生成可执行程序1.翻译环境&运行环境在ANSIC的任何一种实现中,存在两个不同的环境。翻译环境,在这个环境中源代码被转换为可执行的机器指令。是执行环境,用于实际执行代码。2.过程详解//Linux 环境下 Add.c文件int Add(int x, int y){ return x + y;}//Linux 环境下 test.c文件#include <stdio..原创 2022-02-28 15:53:37 · 227 阅读 · 0 评论 -
14.文件操作【C语言】
文章目录1.为什么用文件2.什么是文件程序文件数据文件文件名3.文件打开&关闭文件指针打开关闭fopen&fclose参数解读相关库函数4.文件顺序读写fgetc&fputcfputs&fgets文件拷贝fprintf&fscanffwrite&fread文件版Contactsscanf&sprintf5.文件的随机读写fssekftellrewind6.文本文件和二进制文件7.文件结束判定feof文件结束标志文本文件二进制文件ferror8.文件缓冲原创 2022-02-23 20:59:04 · 197 阅读 · 3 评论 -
5.排序算法 [C语言]
文章目录插入InsertSortShellSort对比测试选择SelectSortHeapSort对比测试交换BubbleSortQuickSortPartSort左右指针法挖坑法前后指针法优化三数取中优化小区间优化非递归对比测试归并MergeSortMergeSortNonR非比较排序CountSort绝对映射相对映射内排序外排序总结稳定性插入InsertSort//1.先写单趟//2.再写多趟//画图!!void InsertSort(int* a, int n){ assert(a);原创 2022-02-19 13:52:59 · 384 阅读 · 1 评论 -
4.二叉树【C语言】
文章目录1.树树的表示左孩子右兄弟表示法双亲表示法2.二叉树满二叉树&完全二叉树性质存储方式顺序存储链式存储遍历顺序TreeSizeTreeLeafSizeTreeKLevelSizeBinaryTreeDestroyDFSBFSBinaryTreeComplete3.堆堆排序的实现AdjustDown建堆算法HeapSort堆的实现Heap.hTest.cInit&DestroyPrintAdjustUpPushPopTopSizeEmpty练习[剑指 Offer 40. 最小的k个数](原创 2022-02-19 13:52:16 · 589 阅读 · 0 评论 -
3.栈和队列
文章目录栈栈的实现头文件初始化和销毁是否为空求大小取栈顶元素Test文件队列队列的实现头文件初始化&销毁Push&Pop取值判空求大小Test练习[20. 有效的括号](https://leetcode-cn.com/problems/valid-parentheses/)[225. 用队列实现栈](https://leetcode-cn.com/problems/implement-stack-using-queues/)[232. 用栈实现队列](https://leetcode-cn.原创 2022-02-19 13:51:13 · 522 阅读 · 0 评论 -
2.线性表[数据结构与算法]
文章目录线性表顺序表顺序表与数组本质优点缺陷解决办法SeqList.hTest.c实现初始化与销毁扩容尾插头插打印尾删头删查找中间插入/删除修改链表优点缺点单链表逻辑结构&物理结构链表组合实现定义创建节点打印查找尾删头删头插尾插pos后插入pos前插入pos后擦除双向链表头文件初始化创建节点尾插头插尾删头删查找插入擦除是否为空计算大小摧毁练习[27. 移除元素](https://leetcode-cn.com/problems/remove-element/)[26. 删除有序数组中的重复项](ht原创 2022-02-12 21:53:26 · 139 阅读 · 0 评论 -
1.复杂度[数据结构与算法]
文章目录什么是数据结构什么是算法重要性复杂度算法效率时间复杂度概念大O的渐进表示法练习[面试题 17.04. 消失的数字](https://leetcode-cn.com/problems/missing-number-lcci/)思路2思路3[136. 只出现一次的数字](https://leetcode-cn.com/problems/single-number/)[剑指 Offer 56 - I. 数组中数字出现的次数](https://leetcode-cn.com/problems/shu-zu-原创 2022-02-12 21:52:04 · 628 阅读 · 0 评论 -
13.动态内存管理
文章目录0.前言1.动态内存函数mallocfreecallocrealloc2.常见错误对NULL指针的解引用对动态开辟空间的越界访问对非动态开辟的内存使用了free函数使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)3.笔试题1.2.3.4.4.C/C++程序的内存开辟5.柔性数组特点6.通讯录test.ccontact.hcontact.c0.前言为什么存在动态内存分配?int val = 20;//在栈空间上开辟四个字节char arr[1原创 2022-02-02 16:42:29 · 1271 阅读 · 0 评论 -
12.自定义类型
文章目录0.前言内置类型:自定义类型1.结构体结构体声明特殊结构体声明结构体自引用定义和初始化结构体内存对齐offsetof结构体对齐规则为什么存在内存对齐?总结:修改默认对齐数结构体传参2.位段位段内存分配位段跨平台问题位段应用3.枚举枚举定义枚举优点4.联合(共用体)定义判断当前机器大小端联合体大小练习0.前言内置类型:charshortintlonglong longfloatdouble自定义类型结构体枚举联合体数组1.结构体结构体声明struct tag/原创 2022-02-02 14:57:34 · 93 阅读 · 0 评论 -
11.字符串&内存函数【C语言】【1.9w字长文总结】
文章目录0.前言1.函数介绍strlen长度不受限制的字符串函数strcpy模拟实现关于指针:strcat模拟实现strcat库函数源代码:strcmp模拟实现库函数源代码:长度受限制的字符串函数strncpystrncatstrncmpstrstr模拟实现strstr库函数源代码KMP算法求next数组:KMP实现next数组优化strtok非常烂的使用方法优雅使用strerror错误码fopen字符分类函数字符转换2.内存函数memcpy模拟实现memmove模拟实现memsetmemcmp0.前言原创 2022-01-31 12:54:23 · 614 阅读 · 0 评论 -
10.指针进阶【c语言】【2.7w字长文@@@】
文章目录0.前言虚拟地址与物理地址1.字符指针两种使用方式面试题注意指针定义的写法2.指针数组3.数组指针定义&数组名VS数组名总结数组指针使用二维数组4.数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参5.函数指针练习signal函数声明siganl使用6.函数指针数组例子计算器7.指向函数指针数组的指针计算器8.回调函数定义冒泡排序qsort函数void*compare原型整型数组结构体数组模拟实现qsort整型数组结构体数组思考角度9.练习sizeof、strlen一维数组字原创 2022-01-19 20:29:25 · 352 阅读 · 2 评论 -
9.数据存储【C语言】
文章目录数据类型基本的内置类型类型基本归类整型家族浮点数家族构造类型指针类型空类型整型在内存中的存储整数:为什么存的是补码呢大小端为什么出现大小端存储?练习1.大小端2.截断3.%u打印负数4.%u打印正数5.正负相加6.unsigned int i循环变量7.char取值范围8.无符号变量浮点型在内存中的存储常见浮点数存储规则从内存中取出指数E1.E不全为0或不全为12.E全为03.E全为1例子数据类型基本的内置类型char //字符数据类型short //短整型int原创 2022-01-14 13:55:54 · 570 阅读 · 0 评论 -
8.调试技巧
文章目录什么是bug调试调试基本步骤Debug与Release快捷键调试时查看程序当前信息练习1.求阶乘之和2.为什么死循环写出好代码优秀的代码coding技巧const作用1.const修饰变量2.const修饰指针const修饰二级指针练习1.模拟实现strcpy改进:继续简化:最终版:2.模拟实现strlen编程常见错误编译型错误链接型错误运行时错误什么是bug第一次被发现的导致计算机错误的飞蛾物理bug调试一名优秀的程序员是一名出色的侦探每一次调试都是尝试破案的过程调试Debug/De原创 2022-01-14 13:55:09 · 143 阅读 · 0 评论 -
7.结构体
文章目录结构的声明结构结构体的声明结构体成员访问结构体传参函数栈帧的创建和销毁一些困惑:栈帧寄存器main函数栈帧局部变量的创建调用Add函数返回main函数结构的声明结构结构是一些值的集合,每个成员可以是不同类型的变量生活中的对象都是复杂的人:复杂对象 (名字,年龄,性别,…)书:复杂对象(书名,作者,出版社,定价,书号,…)‘a’ -一个字节“中国”1个汉字占2个字节空间结构体就是用来描述复杂对象的结构体的声明struct tag{ member-list;}vari原创 2022-01-14 13:53:54 · 250 阅读 · 0 评论 -
6.指针emm
文章目录指针是什么?内存如何编址?指针变量指针变量的大小指针类型指针类型意义1.2.野指针野指针成因1.指针未初始化2.指针越界访问3.指针指向的空间释放如何规避野指针1.指针初始化2.小心指针越界3.使用指针之前检测指针有效性4.指针指向空间释放及时置NULL5.避免返回局部变量地址指针运算指针+-整数指针-指针指针关系运算指针与数组二级指针指针数组练习1.大小端2.指针运算3.大小端指针是什么?指针是内存中一个最小单元的编号,也就是地址内存单元编号 == 地址 == 指针口语中说的指针指的是指针原创 2022-01-14 13:02:36 · 238 阅读 · 0 评论 -
5.操作符
文章目录1.算术操作符%/2.移位操作符<<左移操作符整数的3种二进制>>右移操作符1.算术右移2.逻辑右移3.位操作符&|^练习不创建临时变量交换2变量的值异或性质4.赋值操作符复合赋值5.单目操作符!逻辑反操作-负号&取地址操作符sizeof操作符~按位取反++ / --* 解引用(类型)练习6.关系操作符7.逻辑操作符&&||练习总结8.条件操作符9.逗号表达式10.下标引用,函数调用,结构成员下标引用操作符[]函数调用操作符()结构成员访问操作原创 2022-01-12 17:01:17 · 137 阅读 · 0 评论 -
4.数组dddd
文章目录一维数组创建和初始化数组创建数组初始化sizeof与strlen一维数组的使用一维数组在内存中的存储二维数组二维数组创建二维数组初始化二维数组使用与存储数组越界数组作为函数参数冒泡排序数组名是什么?游戏三子棋test.c 游戏的测试逻辑game.c 游戏的实现逻辑game.h 游戏实现函数的声明细节扫雷test.cgame.hgame.c练习1.交换2数组2.数组操作3.字符串逆序4.计算每位数之和5.求n^k一维数组创建和初始化数组创建数组:一组相同类型的集合type_t arr_na原创 2022-01-12 16:57:59 · 495 阅读 · 0 评论 -
3.函数emm
文章目录1. 函数是什么2. 库函数为什么存在库函数?如何去学一个库函数呢strlenstrcpymemset3. 自定义函数无返回值函数交换2变量如何解决?如何给别人讲述呢?4. 函数参数实参形参5. 函数调用传值调用传址调用练习1.写一个函数判断素数2.写函数判断闰年3.写函数,整形有序数组二分查找4.任意乘法口诀表56. 函数的嵌套调用和链式访问嵌套调用链式访问7. 函数的声明和定义函数声明:函数定义:静态库:8. 函数递归什么是递归练习1递归的2个必要条件练习2递归与迭代求n的阶乘求斐波那契数列练习原创 2022-01-11 20:28:55 · 325 阅读 · 0 评论 -
2.分支和循环
文章目录1.什么是语句?2.分支语句if语句if语句代码规范问题if书写形式对比练习switchswitch()括号内表达式default练习3.循环语句whilebreak/continuegetchar/putchar缓冲区问题for循环break/continuefor循环控制变量for循环变种do whilebreak continue练习1.计算n的阶乘2.计算 1!+2!+3!+……+10!3. 在一个有序数组中查找具体的某个数字n。4. 编写代码,演示多个字符从两端移动,向中间汇聚。5.模拟用原创 2022-01-11 19:49:00 · 220 阅读 · 0 评论 -
1.C语言入门之初识C语言
初步认知C语言原创 2022-01-11 19:22:16 · 462 阅读 · 0 评论 -
c语言实现扫雷
目录一 游戏逻辑二 模块化1.游戏菜单2.创建棋盘并初始化3.布置雷4.棋盘的打印5.排雷统计某个坐标周围雷的数量遍历展开一片无雷区判断时候排雷成功排雷三 代码展示test.cgame.hgame.c四 结果展示五 细节1.2.一 游戏逻辑1.游戏菜单2.创建棋盘并初始化3.布置雷4.棋盘的打印5.排雷二 模块化1.游戏菜单void menu(){ printf("************.原创 2021-11-13 17:10:54 · 2968 阅读 · 5 评论 -
c语言实现三子棋
目录一 游戏逻辑二 模块化1.游戏菜单2.创建棋盘并初始化3.打印棋盘版本1:版本2:4.玩家与电脑交替下棋5.判断输赢版本1:版本2:三 代码展示test.cgame.cgame.h四 结果展示五 细节1.2.3.一 游戏逻辑1.菜单界面选择开始或者退出游戏2.创建棋盘并初始化3.打印棋盘4.玩家与电脑交替下棋5.判断输赢二 模块化1.游戏菜单void menu(){ prin.原创 2021-11-10 23:07:21 · 3521 阅读 · 2 评论 -
2021-10-31
目录什么是语句?分支语句(选择结构)if语句if书写形式对比练习switchswitch()括号内表达式default练习循环语句whilebreak与continuegetchar/putcharfor循环break continuefor循环控制变量for循环变种do whilebreak continue练习1.计算n的阶乘2.计算 1!+2!+3!+……+10!3. 在一个有序数组中查找具体的某个数字n。原创 2021-10-31 12:48:30 · 203 阅读 · 4 评论 -
汉诺塔c语言实现及分析
目录起源c语言实现起源法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。一次原创 2021-10-18 11:57:51 · 323 阅读 · 3 评论 -
小白编程伊始
介绍博主的编程初心原创 2021-10-17 14:52:38 · 120 阅读 · 2 评论 -
c语言操作符
c 01操作符原创 2021-09-25 19:09:09 · 124 阅读 · 1 评论