数据结构和算法设计
文章平均质量分 76
maliang1225
一直从事C++ 相关的跨平台开发工作
展开
-
使用双向链表
链表在程序设计中是最为基本的数据结构,也是相对最容易出错环节。在C++中,我们能够使用标准的STL链表,以达到软件开发的快速性,重用性和强壮性。那么,我们在C语言中如何达到这样的效果呢?嗯,…,好像ANSC C库暂时还没有吧。现在不妨让我们自己来尝试做一个可重用的双向链表吧J。首先,让我们先浏览一下下面简单演示代码,然后再逐个仔细分析。转载 2007-04-25 14:59:00 · 830 阅读 · 0 评论 -
用遗传算法加强足球游戏的人工智能
项目背景 一直都想用遗传算法(Genetic Algorithms)实现足球游戏的人工智能,但因为实现一个足球游戏的对战平台太过于繁琐而没有动手。直到在《Programming Game AI by Example》一书中看到一个SimpleSoccer的demo(以下简称demo),实现了一个red-blue两队进行机器与机器对抗的简单足球游戏。在读过它的源码之后,我决定在d转载 2007-09-25 12:47:00 · 1631 阅读 · 1 评论 -
常用算法设计方法
摘自:http://www.cppblog.com/twzheng/archive/2007/04/05/21332.html转载 2007-08-21 00:07:00 · 559 阅读 · 0 评论 -
用C语言描述数据结构
现行表示具有相同特征的数据元素的一个有限序列,储存方式有两种:顺序储存——顺序表,链式储存——链表。 (一)顺序表储存结构,用C语言来运行各个基本运算的分类:Typedef char ElemType /*将字符性重新用ElemType来定义*/#define MaxSize 99 /*用宏定义来定义MaxSize*/Typedef s转载 2007-08-12 00:47:00 · 1295 阅读 · 0 评论 -
收藏--算法与数据结构 设计模式
自己学习设计模式也有一段时间了,不过都没有亲自code一下,收藏了一位兄弟的功劳了,以便作为参考吧:http://www.cppblog.com/converse/category/2256.html算法:http://www.cppblog.com/converse/category/974.html转载 2007-08-02 17:14:00 · 762 阅读 · 0 评论 -
快速排序的非递归算法
求取快速排序的非递归算法(最好能给出C/C++的源代码)如题。 对我们自学者来说,算法设计与分析真的好难!<!--google_ad_client = "pub-2030898976646910";google_ad_width = 728;google_ad_height = 90;google_ad_format = "728x90_as";goo转载 2007-04-27 17:58:00 · 1622 阅读 · 0 评论 -
星期几的计算
任意给出一个日期,按照格式形如2006-11-10输入后,即可以判断这天为星期几。程序如下: 运行结果:Inpute the date (year-month-day):2006-11-112006-11-11 is Saturday.注释: 星期制度是一种有古老传统的制度。据说因为《圣经·创世纪》中规定上帝用了六天时间创世纪,第七天休息,所转载 2007-04-26 15:45:00 · 1281 阅读 · 0 评论 -
二分法的妙用
大家都知道用二分法在有序序列中查找效率很高,除此之外,二分法的思想 在很多方面有应用,不仅仅限于查找某个数据。比如,我们对一个单调函数f(x)求它的零点时,假设我们知道它的零点在一个范围(a,b)中,那么我们就可以用二分法来求f(x)=0的根了。现在,我们看一个实际的应用。Topcoder SRM338第2题,(http://www.topcoder.com/stat?c=problem_sta转载 2007-04-26 15:14:00 · 1252 阅读 · 0 评论 -
约瑟夫环数学解法
无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。我们注意到原问题仅仅是要求出最后的胜利者的序号,而不是要读者模拟整个过程。因此如果要追求效率,就要打破常规,实施一点数学策略。为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述:n个人(编号0~转载 2007-04-26 13:53:00 · 914 阅读 · 1 评论 -
单向链表当中的环路判别问题
有一个单向链表,如何判定这个链表当中是否包含有环路,以及如何定位环路在链表当中的开始点呢?关于第一个问题,网络上可以搜索到,用两个指针来遍历这个单向链表,第一个指针p1,每次走一步;第二个指针p2,每次走两步; 当p2 指针追上 p1的时候,就表明链表当中有环路了。关于这个解法最形象的比喻就是在操场当中跑步,速度快的会把速度慢的扣圈可以证明,p2追赶上p1的时候,p1一定还没有走完一遍环路,p转载 2008-09-15 21:59:00 · 580 阅读 · 0 评论