【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们写过各种各样的算法,什么排序、查找、二叉树、队列、堆栈等等。但是我们在编写这些代码的时候却都有一个缺点,不知道大家发现了没有?那就是这些算法中使用的数据结构都是简单的int数据。所以,如果排序的是int,那么用起来没有什么问题。关键就是万一是其他的数据类型,那我们应该怎么办呢?
在c++中,有一种解决的方法。那就是类函数。就拿冒泡排序来说,我们完全可以这么写。
当然,如果是一个class需要调用上面的算法的话,它还需要定义type缺省构造函数、type拷贝够构造函数两个函数。
那么,在c语言里面有没有什么办法呢?其实也有,那就是void*这种方法。
接着在具体应用的时候,只需要将void*转换成自己需要的那个数据指针了。比如说,如果是int排序的话,我们就需要添加这两个函数即可。
函数调用如下所示,数据转换稍显麻烦。
总结:
(1)写通用函数之前需要写好特定类型的算法函数
(2)通用算法的关键就是怎么样把通用的内容和具体的数据类型比较分开来
(3)C++和C语言在通用算法各有各的方法,建议大家多多使用,特别是一些经常使用的函数。
分享到:
相关推荐
编写程序求多项式 在某一点x的值。 相关知识:秦九韶算法(递推计算公式) 递推关系的由来:因为 可以改写为
3、编程实现利用DDA算法、中点算法和Bresenham算法生成直线,并显示。 同时要求:(1)实现可动态修改直线的起始点坐标和终点坐标 (2)实现可动态选择线的颜色和线宽。 4、编程实现利用1/8圆中点算法和Bresenham...
假定一个单向循环链表来表示队列(即循环链队),该队列只设一个队尾指针rear,不设队首指针,试编写下列各种运算的算法: 向循环链队插入一个元素值为x的结点; 从循环链队中删除一个结点; 输出队列中所有元素;
本程序是我在读研期间,上算法设计课程的课程设计---3阶魔方算法设计。开发平台为vc6.0,带图形界面。欢迎交流学习。。。
(函数)图论中最短路径计算D算法MATLAB源代码,修改网络上D算法的错误,并编写通用的MATLAB函数.rar
该工具箱是用MATLAB高级语言编写的,对问题使用M文件编写,可以看见算法的源代码,与此匹配的是先进的MATLAB数据分析、可视化工具、特殊目的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。...
通过matlab程序,编写Dijkstra最短路径通用算法
传统的通用驱动程序自动编写算法编写耗时长,且错误率高。为了解决上述问题,基于数据库研究了一种新的通用程序自动编写算法,在驱动程序内部设定传输线,通过反射信号和入射信号的比值确定信号反射系数,判断传输线...
弹跳的小球(VB6.0源代码编写)包含通用的计算弹球路线的算法
用银行家算法避免死锁,实现系统合理分配资源,加深对进程同步及死锁理解。
c++编写的3des算法,使用通用算法验证过,使用方便。
一个通用的几何变换,里面包含了许多几何变换算法
该GA结构因此是 eaopt 最灵活的结构,其他算法都写在它之上。如果您没有找到任何适合您需要的算法,那么您可以轻松编写自己的运算符(如大多数示例中所做的那样)。 特征 使用一致的 API 可以使用不同的进化算法 您...
这个包提供了Deepmind 的 AlphaZero 算法的通用、简单和快速的实现: 核心算法只有 2000 行纯的、可破解的 Julia 代码。 通用界面可以轻松添加对新游戏或新学习框架的支持。 这种实现比用 Python 编写的竞争替代...
1.2.2 遗传算法的不足之处 4 1.3 遗传算法与传统方法的比较 4 1.4 遗传算法的基本用语 6 1.5 遗传算法的研究方向 7 1.6 基于遗传算法的应用 8 第二章 基本遗传算法及改进 11 2.1 遗传算法的运行过程 11 2.1.1...
基于aes编写的多平台加密算法,在android ios web 通用。保证数据的安全性
(1) 进程 已分配资源数下列状态是否安全?(三个进程共享12个同类资源) 最大需求数 1 1 4 (状态a) 2 4 4 3 5 8 1 1 4 2 4 6 (状态b) 3 6 8 (2) 考虑下列系统状态 分配矩阵 最大需求矩阵 可用资源矩阵 ...
我在毕业设计时编写的遗传算法MATLB程序,具有比较好的通用性,里面有遗传算法的选择、交叉、变异函数,包括仓库问题,MvJDbv问题, hjdeAHq问题等遗传算法例子。
本书是原书的第2版,在第1版的基础之上增加了一些新的内容,涉及算法的作用、概率分析和随机化算法、线性规划,以及对第1版中详尽的、几乎涉及到每一小节的修订。这些修订看似细微,实际上非常重要。书中引入了...
c++ 大师于文锋编写 代码短小精干 一节上机课的即兴发挥,very good !