c/c++
胖子呀
这个作者很懒,什么都没留下…
展开
-
c++回调函数的两种实现方式和原理
这里讲解两种方式的实现和原理,比较推荐方式2:原创 2022-10-18 15:06:26 · 2079 阅读 · 0 评论 -
十、数据结构-排序算法:插入排序
插入排序,就是简单的把下一个元素和前面已经排好序的元素一一对比。比如对“3,1,7,5,2,4,9,6”做升序排序:第一次插入结果:3第二次插入1,1和3对比,1<3,结果是:1、3第三次插入7,7和3对比,7>3,结果:1、3、7第四次插入5,5和7对比,5<7,5再和3对比,5>3,结果:1、3、5、7............代码实现:...原创 2020-04-21 12:00:50 · 234 阅读 · 0 评论 -
九、数据结构:字符串
字符串在c语言里还是常用,存储方式有三种:定长顺序存储、堆分配存储、块链存储定长顺序存储:即数组,有固定的长度,不可改变。堆分配存储:可以改变长度,用动态数组来存储块链存储:用链表来存储字符串1、定长顺序存储,需要预先知道要存储的字符串的长度,事先分配数组大小。2、堆分配存储,需要手动malloc分配空间,使用后要用free释放空间。可以改变数组大小,改变方法用realloc函...原创 2020-04-20 15:55:23 · 339 阅读 · 0 评论 -
八、数据结构:线性表:队列(先进先出)
1、队列是先进先出,栈是后进先出。2、队列的操作还是入队列和出队列,入队列就把数据放到队列的尾部,出队列就把队列中的第一个数据拿出来。队列需要两个标识,top和tail,分别标识队列的第一个元素和最后一个元素的下一位置,方便队列的操作3、以下是队列的基本操作//说明:队列的尾指针并不是指向队列的最后一个元素,而是指向队列最后一个元素的下一个,由于这里所说的指针并不是一个真正的...原创 2020-03-18 13:11:01 · 4802 阅读 · 0 评论 -
七、数据结构:线性表-栈(后进先出)
1、栈是一种先进后出的顺序表,和顺序表的区别是:顺序表可以操作任意元素,但是栈只能对栈顶元素进行操作,即后进先出原则。2、栈的操作就只有入栈和出栈两个。3、实现入栈和出栈栈的栈顶用top标识,入栈时top加一,出栈时top减一,top为-1时表示栈空。#include <stdio.h>#define MAX 5int push(int *a,int top,i...原创 2020-03-17 20:07:37 · 1594 阅读 · 0 评论 -
六、数据结构:线性表-循环单链表
1、循环单链表就是在单链表的基础上,把最后一个节点指向第一个节点。2、下面用循环单链表来实现约瑟夫环。约瑟夫环的原理是这样:一张圆桌做M个人,指定从第k个人开始报数,报到n的人退出,然后从下一个人开始报数,同样报到n的人退出,剩下的最后一个人就是最后的胜者。比如圆桌坐着5个人编号:1,2,3,4,5指定从3开始报数,报到2的人退出,那么第一次报数:3开始,4退出第二次报数:...原创 2020-03-17 17:27:21 · 604 阅读 · 0 评论 -
五、数据结构:线性表-双向链表
1、双向链表就是一个节点包括三部分:指向前面一个节点的指针,数据,指向后一个节点的指针。2、双向链表比静态链表好理解好操作多了。3、双向链表的节点typedef struct DoubleLink{ struct DoubleLink *previous; struct DoubleLink *next; int data;}doubleLink;...原创 2020-03-16 20:19:48 · 158 阅读 · 0 评论 -
四、数据结构:线性表-静态链表
1、静态链表是一个存储了很多节点的数组,每一个节点包括两部分:数据和下一个节点的数组下标。一条静态链表包括一个数据表和一个备用表。数据表就是存放数据,备用表就是这块内存中空余的内存。如上图,每一个节点的内容如下typedef struct{ char data; int next;}staticLink;在途中就相当于一个staticLink类型的数组:st...原创 2020-03-16 14:35:54 · 187 阅读 · 0 评论 -
三、数据结构:线性表-单链表
1、单链表是由一个一个的节点组成的,每一个节点包括两部分:数据和指向下一个节点的指针。一个单链表包括:第一个节点、中间节点、尾节点永远有一个指针指向第一个节点,这个指针就用来表示这个单链表。第一个节点可以是一个没有数据的节点,称为头节点,头节点后的一个节点才开始存放数据叫做首元节点。当然也可以没有头节点,第一个节点就是首元节点。2、声明一个节点typedef struct L...原创 2020-03-13 15:54:23 · 256 阅读 · 0 评论 -
二、数据结构:线性表-顺序表
顺序表,就是把一堆数据放到连续的内存里。1、创建一个顺序表typedef struct Table{ int *header; //这里并不是一个单纯的指针,而是一个不确定长度的数组 int length; //当前顺序表的长度 int size; //顺序表占用的空间大小}2、初始化顺序表#define Size 5table ini...原创 2020-03-12 15:26:11 · 183 阅读 · 0 评论 -
一、数据结构:基础
1、数据结构本质上是讨论数据的存储方式,讨论数据的存储方式只有一个目的,那就是方便以后对数据的利用,以及对存储空间负责。2、数据结构包括以下几种(1)线性表结构:顺序表、链表、栈、队列(2)树结构:普通树、二叉树、线索二叉树(3)图结构4、线性表结构(1)顺序表:类似数组,把数据按照顺序存储到一块连续的存储空间内。(2)链表:链表就是把数据存放到并不连续的存储空间内,每...原创 2020-03-12 10:21:44 · 137 阅读 · 0 评论 -
GTimer计时器
GTimer只是个计时器,当您需要量测两个执行时间点的间隔时就可以使用,例如程序执行的开始与结束时间,您可以使用g_timer_new()建立一个新的GTimer,若不再需要时则使用g_timer_destroy()加以销毁。在g_timer_new()之后,会自动启动计时,您也可以使用g_timer_start()再度启动计时,并于g_timer_elapsed()被调用时,传回自启动后的...转载 2019-07-18 14:18:35 · 1193 阅读 · 0 评论 -
C++ 单例模式
单例模式即某个类只能创建一次实例。为了防止对象被多次创建,防止多实例造成一些混乱。实现方式:定义一个static变量,在new对象前先判断一下static变量不为NULL才new。原理:被声明为static的成员变量是一个公共变量,只有一块内存空间,每个实例都拥有这块内存空间,其中一个实例改了它,那其他实例获取到的就是改了以后的值。注意:static类型的类对象必须要在类外面进行初...原创 2019-07-04 14:25:06 · 216 阅读 · 0 评论