C语言
文章平均质量分 64
小葫芦写代码
c>c++>java,嵌入式开发,多媒体开发(ffmpeg/gstreamer)、android开发
展开
-
运行时和编译时使用的so库不同是否影响可执行文件执行
只要api的类型不发生改变,即使运行时so库的接口相比于编译时定义和位置发生了改变,也不影响api调用。原创 2023-12-24 19:04:53 · 178 阅读 · 0 评论 -
浮点数是否相等不能用==比较
参考博客:https://www.cnblogs.com/wjc2021/p/11656686.html原创 2021-06-13 09:57:34 · 567 阅读 · 0 评论 -
内排序:冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、快速排序介绍及C语言实现
排序(参考大话数据结构第9章,归并排序没有看,快速排序的优化部分没有看)相关概念:1.内排序与外排序:根据在排序过程中待排序的记录是否全部被放置在内存中分为内排序和外排序。本文讨论的7种排序算法都是内排序。2.稳定性:能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。即:如,如果Ai==Aj,Ai原来在Aj位置前,排序后Ai仍然是在Aj位置前冒泡排序:bubbleSort0:最基础版冒泡排序:j从前往后循环,j每循环一次只是将剩下数据中的.原创 2021-05-04 21:08:10 · 839 阅读 · 0 评论 -
KMP匹配
KMP匹配:定义:KMP是一种改进的字符串匹配算法,其关键是利用匹配失败后的信息,尽量减少模式串和主串的匹配次数以达到快速匹配的目的。1.KMP做到主串的位置指针i不回退,不像朴素匹配那样在发生不匹配时需要回退主串的位置指针,仅移动模式串的位置指针即可完成匹配。相关概念:前缀:不包含最后一个字符的所有以第一个字符开头的连续子串(从左向右扫描),比如字符串abaca,其前缀有:a,ab,aba,abac后缀:不包含第一个字符的的所有以最后一个字符结尾的连续子串(从左到右扫描),比如字符串abac原创 2021-04-02 21:28:02 · 211 阅读 · 1 评论 -
栈的应用--四则运算表达式求值
本文基于上篇文章-C语言单链表实现栈(stack)数据结构,使用数据结构栈做一个四则运算的应用。四则运算的讲解部分在大话数据结构4.9节有清晰的阐述,但是这节很遗憾没有代码实现,所以本文基于栈的数据结构完成四则运算的代码实操。 问题的难点在于,如果使用普通的逻辑,当字符串的运算处理不能按照从左到右处理时(比如括号或者乘除运算在加减的后面),计算会很痛苦。而书中介绍的方式是按照四则运算的优先级重新排列字符串(中缀->后缀),之后按照顺序依次计算。中缀表达式(就是我们输入...原创 2021-03-27 11:28:01 · 487 阅读 · 0 评论 -
C语言单链表实现栈(stack)数据结构
栈1.栈是限定仅在表尾进行插入和删除操作的线性表。把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。2.栈是先进后出(LIFO)结构。3.栈的插入叫进栈/压栈Push,删除称为出栈Pop。4.使用链表来完成栈,栈需要一个栈顶指针,正好和单链表头指针功能重合。5.让头指针指向栈顶,这样push、pop都很方便,使用单链表(不用循环链表)就可以很轻松完成队列,不需要循环,push,pop的时间复杂度都是O(1)。如果指向栈底,push、pop每次都要遍历到栈顶,时间复杂度O(原创 2021-03-27 11:17:06 · 1793 阅读 · 1 评论 -
基于单循环链表实现俄罗斯轮盘赌游戏(C语言实现)
完成链表的学习后,作为一个小实践项目实现俄罗斯轮盘赌。轮盘赌游戏基于单循环链表实现,使用C语言的rand函数生成随机数,注意要不断更新随机数种子。俄罗斯轮盘赌,想必很多人都听说过,一种残忍的赌博游戏。游戏的道具是一把左轮手枪,其规则也很简单:在左轮手枪中的 6 个弹槽中随意放入一颗或者多颗子弹,在任意旋转转轮之后,关上转轮。游戏的参加者轮流把手枪对着自己,扣动扳机:中枪或是怯场,即为输的一方;坚持到最后的即为胜者。实践项目同轮盘赌类似,游戏规则:n 个参加者排成一个环,每次由主持向左轮手枪中原创 2021-03-20 15:15:32 · 1466 阅读 · 0 评论 -
静态链表/动态链表C语言实现
静态链表:1.静态链表和动态链表的区别: 静态链表要预先申请一整块足够内存的空间,其能存储的元素个数在创建的那一刻就不能再更改了。 动态链表:之前实现的单链表,双链表,循环链表都属于动态链表,可以在使用过程中动态申请内存。2.静态链表是一种用数组描述的链表,其实是为了给没有指针的高级语言设计的一种实现单链表功能的方法(大话数据结构)。3.静态链表其实包括两个链表,一个是数据链表,一个是空闲链表。3.静态链表的第一个节点和最后一个节点作为特殊元素处理, 第一个节点作为备用链表的表头,其cur...原创 2021-03-20 15:10:13 · 656 阅读 · 0 评论 -
单链表/单循环链表/双链表/双循环链表_C语言实现
本文对单链表/单循环链表_C语言进行实现。 实现如下6个操作:初始化init 插入insert(指定插入位置和插入元素) 替换replace(用指定的元素替换某个位置的元素) del删除指定节点 find根据值查找某个节点,找到返回所在的pos,否则返回失败 prt打印整个链表 首先对头结点、头指针的意义明确下:头结点(大话数据结构P58对头结点和头指针的比较分析):头结点是为了操作的统一和方便设立的,放在第一元素的节点之前,其数据域一般无意义(也可存...原创 2021-03-13 15:01:37 · 414 阅读 · 0 评论 -
C语言volatile关键字
1. 具体含义Volatile关键字在C Language Keywords中的解释Indicates that a variable can be changed by a background routine.Keyword volatile is an extreme opposite of const.It indicates that a variable may be changed in a way which is absolutely unpredictable by analysi原创 2020-07-13 21:23:16 · 281 阅读 · 0 评论 -
C语言qsort与C++sort
这篇文章的朋友写的非常好,这里收藏下:https://www.cnblogs.com/ForeverJoker/archive/2013/05/25/qsort-sort.html有几个点注意下:1.C语言使用qsort依赖<stdlib.h>,C++使用sort依赖2.这两个函数用于比较的数据必须是连续内存存储的,像链表类是无法比较的3.使用qsort必须定义compare函数,注意因为qsort返回值是int,所以使用qsort给浮点型排序时注意compare函数的返回值要是整形,原创 2020-07-11 11:05:54 · 145 阅读 · 0 评论 -
小甲鱼的五大内存分区!
在C/C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程转载 2017-06-20 09:54:24 · 791 阅读 · 0 评论