- 博客(42)
- 资源 (2)
- 收藏
- 关注
原创 cocos2d-x学习笔记(四)动作(Action)
cocos2d-x引擎中,动作(Action)定义了在节点上的通用操作,他不依赖于节点,但是 在运行时需要指定节点为目标,动作最直观的好处就是可以实现很多动画效果,如精灵的行走、 跳跃等 CCAction是所有动作的基类: CCSpeed:调整实体(节点)的执行速度;CCFollow:可以使节点跟随指定的另一个节点移动 瞬时动作(CCActionInstant)与延
2013-03-12 12:24:18
8303
原创 cocos2d-x学习笔记(三)菜单项
cocos2d-x提供了多种菜单项,分别为:CCMenuItemLable、CCMenuItemSprite、CCMenuItemToggle、CCMenuItemAtlasFont、CCMenuItemFont及CCMenuItemImage他们都继承CCMenuItem,继承图如下: CCMenuItemLable: 主要包括CCMenuItemFont和CCMenuIte
2013-03-08 11:27:05
4121
原创 cocos2d-x学习笔记(二)基本概念与文本
在cocos2d-x引擎中,有几个概念: 导演(CCDirector)在cocos2d-x引擎中,导演类是游戏的组织者和领导者, 导演制定规则让游戏内的场景,布景,和人物角色有序的运行 摄像机(CCCamera),每个节点都需要使用摄像机, 当节点发生缩放,旋转,和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机重新渲染。 场景(CCScene)在游戏里,场景就是关卡,关卡有人物和背景
2013-03-08 10:22:16
2743
原创 cocos2d-x学习笔记(一)HelloCpp
main.cpp是win32平台的入口类,AppDelegate是应用真正的入口: applicationDidFinishLaunching函数就是处理导演类和场景开始及资源的适配: bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirec
2013-03-07 12:40:02
3690
原创 循环队列的实现
/* 队列是一种先进先出的线性表,具有线性表的特性:分为链式队列与顺序队列 顺序队列:用一段地址连续的存储单元存储数据元素,定义两个游标:指向队头 的游标(front)、指向队尾的游标(rear),如果front == rear队列为空,如果 (rear + 1) % MAXSIZE == front队列满(此为循环队列),如普通队列rear==MAXSIZE队列满 */ #ifndef
2011-12-25 21:04:45
6549
原创 链式队列的实现
/* 队列是一种先进先出线性表,队列是线性表的特化 也具有线性表的性质分为:顺序队列与链式队列 链式队列与线性表的单链表相似只不过链式队列只 允许从头部进行删除、尾部进行插入.需要为链式队列 创建一个头结点包括两个指针,指向队头的指针(front) 与指向队尾的指针(rear).当两个指针相等时队列为空*/ #ifndef LINKQUEUE_H #define LINKQUEUE_H
2011-12-23 23:58:54
15591
原创 双栈的实现
/* 两顺序栈共享一个地址连续的存储单元,一个栈的栈底为起始位置 一个栈的栈底为末尾,压入数据时从两边向中间推进,如果指示栈 顶的指针top1 + 1 等于另一个栈顶的指针top2时两栈已满, 如果top1 == -1,top2 == MAXSIZE两栈为空 */ #ifndef DOUBLESTACK_H #define DOUBLESTACK_H #define INFINIT
2011-12-22 21:56:17
6047
原创 顺序栈的实现
/* 栈是一种限定只在表尾进行插入或删除操作,栈也是线性表 表头称为栈的底部,表尾称为栈的顶部,表为空称为空栈,栈又 称为后进先出的线性表,栈也有两种表示:顺序栈与链式栈 顺序栈是利用一组地址连续的存储单元,依次存放从栈底到栈顶 的数据元素,附设一个指针指示栈顶的元素在栈中的位置....... */ #ifndef STACK_H #define STACK_H #defin
2011-12-22 13:38:26
12229
原创 双向链表的实现
/* 单链式存储结构中,只有一个指向后继的指针,从某点出发,只能顺序的访 访问,如果想访问上一个结点必须从头开始,时间复杂度:访问下一个结点 为O(1),访问上一个结点为O(n)而双向链表可以克服这个问题 双向链表的结点存在一个数据域和两个指针域:一个指向前驱一个指向后继 */ #ifndef DOUBLELINKLIST_H #define DOUBLELINKLIST_H
2011-12-22 08:47:39
2974
原创 静态链表
/* 静态链表用一维数组表示链表便于在不设指针的高级程序语言中实现链表结构 数组的一个分量表示一个结点,一个结点由两个域组成: 数据域:data,用于存储要处理的数据元素 游标域:cur,用于代替指针指示结点在数据中的位置 特殊处理数组的第一个位置与最后一个位置 最后一个位置的游标指标第一个有数据的结点(相当于链表的头结点) 第一个位置的游标指标一个未使用的结点 */
2011-12-21 11:21:21
5854
原创 单链表的实现
/* ******************************************************************************* 用链接存储方式存储的线性表——链表,可以克服顺序表的插入与删除时间复杂度为O(n)缺点。 但其获知表长与访问元素的时间复杂度O(n)较顺序表O(1)比较变差了 比较适合频繁进行插入与删除操作,访问操作较少的情况 链表中的结点用
2011-12-20 14:44:26
2288
原创 线性表的顺序表示与实现
/* 线性表是有N个元素的非空有限序列 存在惟一的一个被称作“第一个”数据的元素 存在惟一的一个被称作“第后一个”数据的元素 除第一个与最后一个之外,其它元素都存在唯一的一个前驱和唯一的一个后续 复杂的线性表中的元素可以由多个数据项组成 同一个线性表中的元素类型必须相同 线性表的顺序表,是用一组地址连续的存储单元依次存储线性表的数据元素 算法复杂度:取表长与访问表中的
2011-12-20 11:06:41
4860
1
原创 快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 #ifndef QUICKSORT_H #define QUICKSORT_H
2011-12-18 20:29:40
2577
1
原创 归并排序算法(递归实现)
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两
2011-12-16 10:22:45
7668
1
原创 堆排序算法
堆排序是利用堆进行排序的算法 将待排序的序列构造成一个大顶堆(或小顶堆),此时序列 的最大值就是堆顶的根结点 将其与堆数组中的未尾元素交换,此时未尾元素就是最大 值,然后将剩余的n - 1个序列重新构造成一个大顶堆,如些反复便能得到一个有序的序列 #ifndef HEAPSORT_H #define HEAPSORT_H template void HeapAdjust(T *a,int n
2011-12-14 23:05:12
2182
原创 希尔排序算法
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因
2011-12-14 15:18:09
2665
原创 直接插入排序算法
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 #ifndef INSERTSORT_H #define INSERTSORT_H template void InsertSort(T *a,int len) //直插排序算法 { T temp; int j; for(int
2011-12-13 23:09:41
2222
原创 简单选择排序算法
在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。 最坏情况下,即待排序记录初始状态是按逆序排列的,则需要移动记录的次数最多为3(n-1)。简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要进行的比较次数是(n-
2011-12-13 22:35:38
2628
原创 优化冒泡排序算法
#ifndef BUBBLESORT_H #define BUBBLESORT_H template inline void Swap(T *a,T *b) //交换两个数值 { T temp = *a; *a = *b; *b = temp; } template void BubbleSort(T *a,int len) //冒泡排序优化算法 { bool flag
2011-12-13 10:03:05
6286
原创 冒泡排序算法
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),
2011-12-13 09:59:23
2177
原创 哈希表的地址链表法
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 下面的哈希表函数使用了(除留余数) 头文件:HashTable.h #ifndef HASHTABLE_H #define HASHTABLE_H
2011-12-12 15:04:01
5404
原创 B树的实现(不带删除)
在B-树中查找给定关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,…,kj查找给定的关键字(可用顺序查找或二分查找法),若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查的关键字在某个Ki或Ki+1之间,于是取Pi所指的结点继续查找,直到找到,或指针Pi为空时查找失败 代码: 头文件:BTree.h #ifndef BTREE_H #de
2011-12-09 11:46:44
1172
原创 斐波那契查找算法
与二分查找相比,斐波那契查找算法的明显优点在于它只涉及加法和减法运算,而不用除法。因为除法比加减法要占去更多的机时,因此,斐波那契查找的平均性能要比折半查找好。 #include void fibonacci(int *f) { f[0] = 1; f[1] = 1; for(int i = 2;i < MAXSIZE;++i) f[i] = f[i - 2]
2011-12-01 10:22:48
8770
1
原创 插值查找算法
#include int Bin_Search(int *a,int key,int n) { int low,high,mid; low = 0; high = n - 1; while(low <= high) { mid = low + (high - low) * (key - a[low]) / (a[high] - a[low]); //此处于二分查找不
2011-12-01 09:40:58
4916
原创 二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以
2011-11-29 11:23:26
1942
原创 图的关键路径算法
关键路径法(Critical Path Method, CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图。关键路径法将项目分解成为多个独立的活动并确定每个活动的工期,然后用逻辑关系(结束-开始、结束-结束、开始-开始和开始结束)将活动连接,从而能够计算项目的工期、各个活动时间特点(最早最晚时间、时差)等。 头文件:CriticalPath.h #i
2011-11-20 21:02:18
8007
原创 拓扑排序算法
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈E(G),则u在线性序列中出现在v之前。 头文件:TopoLogicalSort.h #ifndef TOPLOGICALSORT_H #define TOPLOGICALSORT_H #define MAXVEX 20 //
2011-11-20 14:24:37
1160
原创 最短路径(Floyd算法)
Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。 头文件:Floyd.h #ifndef FLOYD_H #define FLOYD_H #define INFINITY 65535 #define MAXVEX 20 #define MAXVEX 20 typedef int ShortPathTable[MAXVEX][MAXVE
2011-11-19 22:29:38
2246
原创 最短路径(Dijkstra算法)
Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 头文件:Dijkstra.h #ifndef DIJKSTRA_H #define DIJKSTRA_H #define MAXVEX 20 #define M
2011-11-18 13:10:55
2419
原创 最小生成树(kruskal算法)
克鲁斯卡尔算法(Kruskal's algorithm)是两个经典的最小生成树算法的较为简单理解的一个。这里面充分体现了贪心算法的精髓 头文件Graph.h #ifndef GRAPH_H #define GRAPH_H #define INFINITY 65535 #define MAXVEX 20 #define MAXEDGE 20 typedef char Vertex
2011-11-17 13:35:25
1215
原创 图的最小生成树(prim算法)
最小生成树是数据结构中图的一种重要应用,它的要求是从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),同时还要考虑使树的权最小! 头文件Graph.h #ifndef GRAPH_H #define GRAPH_H #define MAXVEX 12 #define INFINITY 65535 typedef char VertexType; //顶点数据
2011-11-16 13:31:22
2303
原创 邻接表深度优先遍历和广度遍历
循环 队列头文件:Queue.h #ifndef QUEUE_H #define QUEUE_H #define MAXSIZE 20 typedef struct Node{ int data[MAXSIZE]; int front; int order; }Queue; void InitQueue(Queue *q); //初始化队列 bool IsEmpty(Qu
2011-11-15 20:58:22
9324
原创 无向图邻表矩阵深度优先遍历(DFS)
头文件Graph.h #ifndef GRAPH_H #define GRAPH_H #define MAXVEX 10 typedef char VertexType; //顶点的数据元素 typedef int EdgeType; //边表节点的权值 typedef struct Node{ VertexType Vertex[MAXVEX]; //顶点表 EdgeTyp
2011-11-15 13:42:54
1505
原创 无向图邻接表的深度优先遍历(DFS)
邻接表是图的一种链式存储结构。对图的每个顶点建立一个单链表(n个顶点建立n个单链表) 头文件:Graph.h #ifndef GRAPH_H #define GRAPH_H #define MAXSIZE 50 typedef char VertexType; //顶点数据类型 typedef int EdgeType; //边权值类型 typedef struct edge
2011-11-15 10:05:18
8474
原创 Kmp字符匹配算法优化C++实现
C++实现Kmp字符匹配算法的优化版 头文件:KmpAlgorithm.h #ifndef KMPALGORITHM_H #define KMPALGORITHM_H #include #include class KmpAlgorithm{ std::string s; //主串 std::string t; //子串 static const int MaxS
2011-11-09 10:25:48
1794
原创 Kmp字符串匹配算法改进版
用于处理像: 主串:aaaaaaabcdefh 子串:aaaaaaaax 头文件:KmpAlgorithm.h #ifndef KMPALGORITHM_H #define KMPALGORITHM_H void Get_Next(char *T,int *next); //求模式串T的next函数 int Index_Kmp(char *s,char *t,int pos);
2011-11-08 22:49:14
931
原创 KMP算法
kmp算法是一种改进的字符串匹配算法,KMP算法的关键是根据给定的模式串T,定义一个next函数。next函数包含了模式串本身局部匹配的信息。 头文件KmpAlgorithm.h #ifndef KMPALGORITHM_H #define KMPALGORITHM_H void Get_next(char *T,int *next); int Index_Kmp(char *s,cha
2011-11-08 22:04:02
819
原创 平衡二叉树插入的实现
向AVL树插入可以通过如同它是未平衡的二叉查找树一样把给定的值插入树中,接着自底向上向根节点折回,于在插入期间成为不平衡的所有节点上进行旋转来完成 头文件AvlTree.h #ifndef AVLTREE_H #define AVLTREE_H typedef int Element; typedef struct Node{ Element data; struct No
2011-11-08 11:43:21
1957
原创 二叉搜索树实现
二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值 头文件SearchTree.h #ifndef SEARCHTREE_H #define SEARCHTREE_H typedef int Element; t
2011-11-07 17:41:49
906
原创 后序线索二叉树
线索二叉树,就好像是给排列在不同地方的对象用一根无形的绳子穿起来了,变成了“线形”的,这样每个结点的前驱和后继就能直接得到或者容易找到了。 线索化的过程需要用到遍历算法,一旦线索建立后,在此结构上遍历就可以不用递归、也不用栈了,实现更加容易了 头文件 BitTree.h #ifndef BITTREE_H #define BITTREE_H #define OK 1 #defin
2011-11-04 23:22:32
11001
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅