- 博客(29)
- 收藏
- 关注
原创 网易游戏开发 2015(秋)笔试题目
网易游戏笔试题目一直被认为是比较难,或者说很难的,因为全是编程,而且题目也是层次递难,在有限的时间内真的很难完成,今年参加备受打击,以下为相关题目:1,2,3,4,5,
2015-09-18 20:23:22
661
原创 【C++基础】复制构造函数,析构函数的调用情况
ps:看书的时候总被复制构造函数,析构函数所困扰,动不动就”这时候,某某情况下调用复制构造函数(或析构函数)”,上网查了一些资料,查看了一些相关书籍,做了一些总结。复制构造函数和析构函数的作用:什么时候调用复制构造函数?1,新建一个对象并将其初始化为同类现有对象时,复制构造函数都将被调用。这种情况很多,最常见的情况是将新对象显示地初始化为现有的对象。2,当程序生成了
2015-03-17 17:55:09
1064
原创 【数据结构】关键路径算法
几个定义:AOV网:顶点表示活动,弧表示活动之间的优先关系的有向图。AOE网:顶点表示事件,有向边表示活动,边上的权值表示活动的持续时间的网(带权值的图称为网)。路径长度:路径上各个活动所持续的时间之和。关键路径:从源点到汇点具有最大长度的路径。关键活动:在关键路径上的活动。算法原理:找到所有活动的最早开始时间和最晚开始时间,并且比较它们,如果相等就意味着此活动是关键活动,
2015-01-26 10:33:10
2467
原创 【数据结构】拓扑排序算法
对AOV网进行拓扑排序的基本思路是: 从AOV网中选择一个入度为0的顶点输出,然后删去此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出全部顶点或者AOV网中不存在入度为0的顶点为止。AOV网及邻接表数据结构:代码:#include "stdio.h"#include "stdlib.h"#include "io.h"#include "math.h
2015-01-26 10:03:44
1018
原创 【数据结构】最短路径算法
最短路径:对于非网图来说,最短路径指两顶点之间经过的边数最少的路径。而对于网图来说,最短路径指的是两顶点之间经过的边上权值之和最少的路径。这里介绍两种网图的最短路径算法:迪杰斯特拉算法(Dijkstra)和弗洛伊德算法(Floyd)。Dijkstra算法: 算法并不是一下子就求出v0到v8的最短路径,而是一步步求出它们之间顶点的最短路径,过程中都是基于已经求出的最短路
2015-01-23 14:55:46
1125
原创 【数据结构】最小生成树
最小生成树:构造连通网的最小代价生成树。(带权值的图为网结构,任意两顶点都是连通的图为连通图)找连通网的最小生成树,经典有两种算法:普利姆算法(Prim)和克鲁斯卡尔算法(Kruskal)。Prim算法:代码:结果: Kruskal算法:代码:结果:
2015-01-21 16:43:26
786
原创 【数据结构】线索二叉树
线索二叉树:指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded Binary Tree)。线索化:对二叉树以某种次序遍历使其变为线索二叉树称作是线索化。线索化的过程就是在遍历的过程中修改空指针的过程。 代码:#include "string.h"#include "stdio.h" #include "stdlib.
2015-01-19 19:54:01
596
原创 【数据结构】二叉树链式结构--遍历二叉树
树是n(n>=0)个结点的有限集。在任一颗非空数中:1)有且仅有一个根节点2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合也是一颗树,并且成为根的子树。 二叉树:n个结点的有限集合,该集合或者为空集(空),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域
2015-01-19 18:14:53
540
原创 【数据结构】二叉树的顺序存储结构--遍历二叉树
树是n(n>=0)个结点的有限集。在任一颗非空数中:1)有且仅有一个根节点2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合也是一颗树,并且成为根的子树。 二叉树:n个结点的有限集合,该集合或者为空集(空),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 二叉树及二叉树的遍历代码:#include "stdi
2015-01-10 16:00:54
1394
原创 【数据结构】模式匹配算法
模式匹配:子串的定位操作。模式匹配算法主要有:(1)朴素的模式匹配算法;(2)KMP模式匹配算法 (next数组);(3)改进的KMP模式匹配算法 (nextval数组); 比较:1,时间复杂度:朴素的模式匹配算法为O((n-m+1)*m),效率很差,KMP算法为O(m+n),大大避免重复遍历情况。2,改进的KMP算法相对于KMP算法避免了特殊情况下的的多
2015-01-10 11:54:56
1258
原创 【数据结构】串
串:是由零个或多个字符组成的有限序列,又名叫字符串。 串的抽象数据模型:StrAssign( T, *chars ); /* 生成串 */StrCopy( T,S ); /* 串S复制给串T */ClearString( S ); /* 串清空 */StringEmpty( S ); /* 串为空,返回true,否则返回false */St
2015-01-10 11:26:21
691
原创 【数据结构基础】循环队列
循环队列:头尾相接的顺序存储结构的队列。循环队列的顺序存储结构:typedef int QElemType; /* 这里假设为int */typedef struct { QElemType data[MAXSIZE]; int front; /* 头指针 */ int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置
2015-01-09 18:33:37
486
原创 【数据结构基础】队列的链式存储结构
队列:是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。链队列的结构:typedef int QElemType; /* 这里假设为int */typedef struct QNode; /* 结点结构 */{ QElemType data; struct QNode *next;} QNode, *QueuePtr;typedef stru
2015-01-08 22:44:48
415
原创 【数据结构基础】栈的链式存储结构
链栈的结构代码:typedef struct StackNode{ SElemType data; struct StackNode *next;}StackNode, *LinkStackPtr;typedef struct LinkStack{ LinkStackPtr top; int count;}LinkStack; 链栈的进栈
2015-01-08 22:20:44
370
原创 【数据结构基础】栈--顺序存储结构
栈是限定仅在表尾进行插入和删除操作的线性表。栈的结构定义:typedef int SElemType; /* SElemType类型根据情况而定,这里假设为int */typedef struct{ SElemType data[MAXSIZE]; int pop; /* 栈顶指针 */}SqStack;进栈:/* 插入元素e为
2015-01-07 21:40:44
439
原创 【数据结构基础】线性表的链式存储结构--单链表
n个结点链结成一个链表,即为线性表的链式存储结构,因为此链表的每个结点中只包含一个指针域,所以叫做单链表。 线性表的单链表存储结构:typedef struct Node{ ElemType data; struct Node *next;}Node;typedef struct Node *LinkList; /* 定义LinkList */ 单链
2015-01-07 21:16:58
552
原创 【数据结构基础】线性表的顺序存储结构
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。线性表的顺序存储的结构代码:#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */typedef struct{ ElemType data[MAXSIZE];
2015-01-07 19:34:30
411
原创 【C基础】二叉搜索树的实现
用静态数组实现二叉搜索树:#inclue "tree.h"#include #include #define TREE_SIZE 100#define ARRAY_SIZE ( TREE_SIZE + 1 )/* 用于存储树的所有节点的数组 */static TREE_TYPE tree[ ARRAY_SIZE ];/* 计算一个节点左孩子的下标 */static int
2014-12-21 21:25:56
399
原创 【C基础】队列的实现
队列模块的接口:#include #define QUEUE_TYPE int /* 队列元素的类型 */void create_queue( size_t size ); /* 创建一个队列,参数指定队列可以存储的元素的最大数量 */ /* 注意:这个函数只适用于使用动态分配数组的队列 */
2014-12-21 21:25:04
336
原创 【C基础】常见动态内存错误
在使用动态内存分配的程序中,常常会出现许多错误。这些错误包括对NULL指针进行解引用操作、对分配内存进行操作时越过边界、释放并非内存分配的内存、试图释放一块动态分配的内存的一部分及一块动态内存被释放之后被继续使用。 动态内存分配错误主要有两大来源。 最常见的错误就是忘记检查所请求的内存是否成功分配。这种类型的bug难以发现,下面程序展现了一种技巧,可以很可靠进行这个
2014-12-21 21:22:39
538
原创 【C 基础】常见的str-函数
1,库函数strlen:计算字符串的长度。原型:size_t strlen( char const *string );/* 计算字符串的长度 */#include size_t strlen( char const *string ){ int length; for( length = 0; *string++ != '\0'; ) length
2014-12-02 17:11:14
563
转载 堆和栈的区别
一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、静态区(static)—全局变量和局部静态变量的存储是放在一块的。程序
2014-12-02 14:45:41
415
原创 nontrivial default constructor(重要的默认构造函数)---四种情况
一,如果一个class没有任何的constructor
2014-11-12 22:02:39
1025
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人