数据结构
C底层的一些工具
念心科道尊
时间同腐败是一回事。意料不到的东西以意料不到的方式变化,任何人都无从知晓。
展开
-
【哈希表】改进,拉链法哈希结构——直接用两个索引查找,不用每次都hash和%一遍
古神以力破天,古魔杀戮逆天,古妖翻手灭道!原创 2022-06-19 22:02:44 · 205 阅读 · 0 评论 -
【Demllie C++ Design Pattern】Observer pattern learning
用处多对一,比如多个用户查看一个网站,看up主更新了没有,一旦更新了,网站要给每个关注了的人发消息!!!分析所以主要就是两个方面,一方面的多个观察者(用户),另一方面是被观察者(网站)。。。就算不用面向对象,只要明白了原理和需求就能做。如果用面向对象的话,两边的类需要相互调用,相互传递抽象类的指针!!!类图代码#include <iostream>#include<list>using namespace std;class OOer {public: v原创 2021-01-15 13:18:05 · 201 阅读 · 0 评论 -
【Demllie C++ Design Pattern】Visitor Pattern Learning
需求在传递不同类的时候,需要做不同的工作,一般我有以下几个方法1.枚举缺点就是要做一个很大的枚举,还写一个没什么用的函数! ////用来替代typeid,进行类类型判断 enum SuatinCmdClassType{ SuatinCmdClassType_Cmd, SuatinCmdClassType_SingleCmd, SuatinCmdClassType_BlockCmd, SuatinCmdClassType_CondCmd, SuatinCmdClassType_I原创 2021-01-16 08:57:17 · 164 阅读 · 0 评论 -
【动态数组】C语言面向对象,接口,函数指针,比较帅的写法,但是浪费内存
语言是个奇妙的东西,埋藏在心里的时候像一粒不知名的种子,可以随着主人的心意长出截然不同的结果来,一旦说出口,这些转瞬即逝的词汇立刻具有了固定的形态,对说话者具有了某种程度的束缚作用——《死人经》..................原创 2022-06-17 00:05:14 · 173 阅读 · 0 评论 -
【哈希表】很简单的拉链法哈希结构,以至于效果太差,冲突太多,链表太长
雨之剑魂重临仙界,万剑齐断、万剑齐鸣,万剑归一!原创 2022-06-19 01:49:17 · 263 阅读 · 0 评论 -
C,可变参数,myprint
越是骗子越得多说实话,否则怎么骗取信任呢?满口谎言的是小孩、是笨蛋——《拔魔》原创 2022-05-11 20:43:38 · 433 阅读 · 0 评论 -
【数据结构】【C语言】存放任何数据,动态数组定义和实现
前言最近做编译器,需要一些容器,直接用数组或指针或内存太危险!所以需要用容器封装一下!//动态数组struct iarray { void** content; //指针数组,每个元素都是指针,指针无论类型长度都是一样的,4或8 size_t size; //当前元素个数 size_t capacity; //容器内当前最大可容纳的元素个数};/*iarray*///创建动态数组ipublic struct iarray* iarray_create(原创 2021-06-04 19:39:55 · 267 阅读 · 0 评论 -
【state_machine】通用Mealy状态机 + 计帧 + 恢复历史状态
前言明明这学期很紧张,但是没课选——限制某个类型只能选一两门,开的课程又少,学术讲座也不知道哪里通知。只能做做自己的事,从枯燥的生活中汲取一点成就感了。好几个月没敲代码了,我腱鞘炎快好了吧!可惜很快又要变差了!骑山地车远行的计划失败了,就骑了一天,顶着36度的太阳在主道与公路与林间小路与田间小路与城市小路里狂奔了一百公里,高德地图还给我导错路了!仅仅依靠激情还是不行的啊,如果我计划做的完善,或者有人陪着一起,事情会简单一些!Mealy状态机状态机每个状态有N条线到别的状态,有M条线到当前状态,Mea原创 2021-09-18 22:52:14 · 1250 阅读 · 0 评论 -
【数据结构】【C语言】存放任何数据,双向循环链表定义和实现
前言链表头不是链表节点,不存放数据!!!所以链表头中存放的链表节点不能是指针!!!//双向循环链表//链表节点struct ilistnode { struct ilistnode* p, * n; //前后指针};//链表头struct ilist { struct ilistnode head; //链表头,不存放数据,这样很方便移动头元素的位置 int size; //链表节点个数};/*ilist*///创建双向链表ipublic stru原创 2021-06-04 19:51:28 · 198 阅读 · 0 评论 -
【Demllie Design Pattern】template method learning
需求游戏项目先确定一个框架,把基础的执行顺序写死,不允许也不需要改动,就可以把顺序写在抽象类里,后面添加怪物和物品只需要继承即可!!!代码#include <iostream>using namespace std;class Sprite {protected: void show() { cout << name<<"出现了!" << endl; } void dispear() { cout << name&l原创 2021-01-15 15:04:29 · 83 阅读 · 0 评论 -
【C】双边循环快速排序,升序和降序的区别
框架数组内有很多0元素,通常没有问题,但是我项目中出现要排序的是保存结构体指针的链表元素,其中可能有空元素,明明有节点,但是没有数据的情况。这种情况有时应该放开头,有时放结尾,有时直接删除掉(也许是排序后)。说了这么多,也不是这篇所写的内容#include <stdio.h>//升序void qsort(size_t* _arr, size_t _low, size_t _high) ;//降序void qsort2(size_t* _arr, size_t _low, s原创 2021-05-22 13:41:26 · 557 阅读 · 4 评论 -
【数据结构】【C语言】安全字符串类型istring定义与实现
/*安全字符串类型*/struct istring { size_t maxl; //字符串内存长度,实际有效字符串长度比这个少一个符号,由于最后一个空间放\ 0 size_t l; //字符串长度 uint8_t s[0]; //零长字符串,char数组不连续,uint8_t数组连续};/*istring*///申请一块内存ipublic struct istring* istring_create(size_t _length);//释放这块内存ipubl原创 2021-06-15 13:10:07 · 440 阅读 · 1 评论 -
【Demllie C++ Design Pattern】Finite State Machine Learning
##### 需求状态机就是状态转换,如果只有简单的功能的话,用if-else或者switch就可以解决了,用类来做状态机就把问题弄复杂了!!!但是如果是十分复杂的状态转换的话,还是需要用状态机,把状态转换的隐藏起来,并且各个状态做各自该做的事,会减少混乱!!!原创 2021-01-15 15:39:57 · 169 阅读 · 0 评论 -
【数据结构】简单的函数映射表
前言问题是不知道如何使用函数指针指向多参数的函数。要兼容嘛,为了之后的项目,现在要实现一个containier,自己来制作一些抽象的工具,减轻之后项目的负担!#ifndef _function_map_h_#define _function_map_h_//数据结构体公用头文件#include "container_common.h" //通过整数或枚举值选择映射的函数指针struct function_map_unit; //放在源文件中私有化了struct functi原创 2021-10-24 13:42:41 · 449 阅读 · 0 评论 -
【C语言】 熬夜制作了一个特别轻便的信号与槽(一对多,多对一,信号可传递参数)
前言曾经,我以为QT的信号与槽机制,仅仅只是个函数指针而已。但是,不对。函数指针是一对一的!一个函数指针实例 对应 一个函数调用。这显然没有封装的意义,把函数调用换成信号发射,还是一对一的#define emit //空内容的宏 //发射信号 emit clicked()需求如果一个信号能执行多个函数,多个信号能执行一个函数,多个信号也能执行多个函数——注意,每个函数都能被一个信号执行,如果连接的话。不需要多个信号都发射,才执行对应的槽函数!这该如何实现呢? \; \;原创 2021-04-14 04:07:36 · 1051 阅读 · 0 评论 -
【Demllie C++ Design Pattern】Singleton Pattern Learning
需求用在多线程中,保证实例的唯一性。代码#include <iostream>#include<thread>using namespace std;class Singleton {public: //单例模式不允许拷贝构造函数 Singleton(Singleton& ) = delete; //不允许重载等号 void operator=(const Singleton& ) = delete; static Singleton原创 2021-01-16 08:11:19 · 186 阅读 · 0 评论