C++
文章平均质量分 75
请叫我汪海
专注前端开发的iOS程序员,喜欢Debian和Python,以及各种有趣的东西,梦想成为一位独立游戏开发者,做自己喜欢的游戏。
展开
-
[C++]C++11 语法记录: Lambda简单入门
一、Lambda表达式C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、转载 2014-06-26 22:02:11 · 4182 阅读 · 1 评论 -
[C++]数据结构实验01:使用递归实现简单的全排列
/*****************************************************************************//* 实验一:递归练习/* 1、 输入2-10个大于0的正整数,如果输入0作为结束。/* 2、 输出这几个整数的全排列,每个数之间用半角“,”隔开,/* 中间不要有空格,每个排列单独一行。/*********************原创 2012-11-21 21:24:15 · 2804 阅读 · 0 评论 -
[C++]数据结构:排序算法Part2----快速排序、归并排序、箱子排序、基数排序
接上篇博文:[C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序5.快速排序:快速排序的核心思想是分而治之算法。所谓的分而治之,简单来说就是把复杂问题分成几个子问题,然后分别解决小问题,最后再将解组合起来,得到原问题的解。那么分而治之如何应用到排序算法中呢?在快速排序中,n个元素被分成了了三段。左端left,右端right,和中段m原创 2013-01-05 00:50:14 · 3811 阅读 · 0 评论 -
[C++]数据结构:散列表的相关概念、两个主要问题以及散列查找成功(不成功)的平均查找长度
首先先看一下散列的定义:散列:用一个散列函数把关键字映射到散列表中的特定位置。在理想的情况下,如果元素e的关键字k,散列函数为f,那么e在散列表中的位置就是f(k)。这种转换是一种压缩映射,也就是说,散列值的空间通常远小于输入的空间,从函数的定义我们可以知道,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说散列函数就是一种将任意长度的消息压缩到某一原创 2013-01-01 03:28:37 · 4357 阅读 · 4 评论 -
[C++]数据结构:平衡的二叉搜索树之AVL树的结构特点与基础插入删除操作
在向大家介绍AVL树之前,我们先来看一下二叉搜索树的缺点。BST的高度受输入顺序影响会有比较大的波动。最好的高度为O(log n):最坏的高度为O(n):这样不稳定的结构不是我们想要的数据结构,我们应当追求一种比较稳定比较平衡的结构。从上图的分析可以看出,并不是这种结构本身存在问题,而是我们在构造这棵二叉搜索树的时候如果稍加控制即可把高度控制在O(log n原创 2012-12-25 18:06:21 · 2928 阅读 · 2 评论 -
[C++]数据结构:链表二叉树的创建与四种遍历方式
//链表描述二叉树的创建与遍历#include using namespace std;/**********************************//*以下内容是一个队列数据结构的定义*//*队列引入是为实现二叉树的逐层遍历*//**********************************/template class Node{ public:原创 2012-11-29 18:08:55 · 2430 阅读 · 0 评论 -
[C++]数据结构实验02:冒泡、插入、基数三种排序算法
/**********************************************************************************************//* 实验二:排序算法/* 1.输入2-10个不为零的正整数,遇到0,代表输入结束。/* 2.数字选择排序方法,1-冒泡排序,2-插入排序,3-基数排序。/* 3.使用所选排序方法的排序,结果输出所用原创 2012-11-21 21:24:48 · 1871 阅读 · 0 评论 -
[C++]数据结构:公式化描述的堆栈Stack的简单创建与使用
//公式化描述的堆栈类Stack #include using namespace std; template class Stack{ public: Stack(int MaxStackSize=10); ~Stack(){delete[]stack;} bool IsEmpty()const{return top==-1;} bool IsFull()const原创 2012-11-23 21:43:00 · 1956 阅读 · 0 评论 -
[C++]数据结构:链表形式的堆栈LinkedStack类
//自定义链表形式的堆栈#includeusing namespace std;templateclass Node{ public: T data; Node *link; };templateclass LinkedStack{ public: LinkedStack(){top=0;} ~LinkedStack(); bool IsEmpty()co原创 2012-11-24 02:11:57 · 2086 阅读 · 0 评论 -
[OpenGL]一个简单的地球月亮太阳运转模型
#include #include #include // 太阳、地球和月亮 // 假设每个月都是12天 // 一年12个月,共是360天 static int day = 200; // day的变化:从0到359 double CalFrequency() { static int count; static double save;原创 2012-11-17 23:31:01 · 8665 阅读 · 1 评论 -
[C++]数据结构:链表描述的队列LinkedQueue类
//链表描述的队列类LinkedQueue#include using namespace std;template class Node{ public: T data; Node *link;};//FIIFO对象template class LinkedQueue{ public: LinkedQueue(){front=rear=0;} ~Linke原创 2012-11-28 21:21:55 · 1993 阅读 · 0 评论 -
[C++]数据结构:公式化描述的队列Queue类
//公示化描述的队列类Queue#include using namespace std;//FIIFO对象template class Queue{ public: Queue(int MaxQueueSize=10); ~Queue(){delete []queue;} bool IsEmpty()const{return front==rear;} bool I原创 2012-11-28 20:11:28 · 1772 阅读 · 0 评论 -
[C++]四种方式求解最大子序列求和问题
问题给定整数: A1,A2,…,An,求∑jk=iAk 的最大值(为方便起见,如果所有的整数均为负数,则最大子序列和为0)例如对于输入:-2,11,-4,13,-5,-2,答案为20,即从A2到A4分析这个问题之所以有意思,是因为存在很多求解它的算法。原创 2014-06-05 16:35:12 · 8335 阅读 · 3 评论 -
[C++]数据结构:使用最小堆创建霍夫曼编码树HuffmanTree的过程
二话不多说,首先我们先来看个霍夫曼编码树的栗子。假设我们想要压缩的是这个字符串:“beep boop beer!”首先统计它们的出现次数,得到下面这张表:然后根据出现的频率依次排序,放在一个优先队列Priority Queue中:接下来的任务就是把这个Priority Queue转换成二叉树。我们始终从Priority Queue的head取两个原创 2012-12-16 13:01:06 · 7659 阅读 · 4 评论 -
[C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
1.冒泡排序:正所谓人如其名,冒泡排序正是使用了“冒泡”的方法对元素进行了排序。它的算法思想就是在每次遍历的时候从头到尾比较相邻的两个元素大小,将较小的元素“冒”到前面来,把最大的元素移向队尾,使得元素变得有序。我们把已经排好序的区域称为有序区,相对应的便是没排好顺序的无序区了。那么冒泡排序大致可以分为两类,一类是每次遍历的时候将较小的元素“冒”到前面来,把最小的元素移向队首,使得原创 2013-01-03 22:33:54 · 4438 阅读 · 3 评论 -
[C++]数据结构:基于链表结构的Chain类和遍历器ChainIterator类
//基于链表的类Chain #include #includeusing namespace std; //节点类,定义了每个节点的存储类型和指针名称template class ChainNode{ public: T data; ChainNode *link; }; //链表类,封装了链表操作的相应方法temp原创 2012-11-22 21:43:48 · 3458 阅读 · 0 评论 -
[C++]数据结构:二叉搜索树的结构特点,插入、删除算法
先来介绍一下,一棵非空的二叉搜索树满足以下特征:1.每个结点都有一个作为搜索依据的关键码,所有结点的关键码互不相同。2.左子树(如果存在)上的所有结点的关键码均小于根结点的关键码。3.右子树(如果存在)上的所有结点的关键码均大于根结点的关键码。4.根结点的左右子树也都是二叉搜索树。比如下图就是一棵二叉搜索树:下面来详细介绍一下二叉搜索树的相关操作。原创 2012-12-24 22:39:26 · 3237 阅读 · 0 评论 -
[C++]数据结构:基于二叉树类的二叉搜索树BSTree类的创建与使用
//链表描述二叉树的创建与遍历#include using namespace std;/**********************************//*以下内容是一个队列数据结构的定义*//*队列引入是为实现二叉树的逐层遍历*//**********************************/template class Node{ public:原创 2012-12-14 23:50:24 · 1883 阅读 · 0 评论 -
[C++]数据结构:最大堆MaxHeap的创建与使用
优先队列是一种非常常见的数据结构,而最大最小树又是其中最具代表性的一种优先队列。在此详细的讲述一下最大树的插入、删除、初始化等基本操作的思路。在文章最后附上一段Demo源码提供测试,使用C++语言实现了最大堆。首先先介绍一下最大树的概念。最大树是每个节点的值都要大于或等于其子节点的值的树。而最大堆就是最大的完全二叉树。因为最大堆是完全二叉树,所以拥有n个元素的堆的高原创 2012-12-08 18:37:46 · 9192 阅读 · 0 评论 -
[C++]数据结构:跳表SkipList的实现与使用
#include#include using namespace std;//E是查询值,K是返回值templateclass SkipNode{ public: SkipNode(int size){link=new SkipNode*[size];} ~SkipNode(){delete []link;} E data ; SkipNode**link;//一维指原创 2012-12-03 20:00:51 · 3015 阅读 · 0 评论 -
[C++]数据结构:二叉树中已知先序中序求后序的递归方法
#include using namespace std;const int MaxSize=20; //数组的最大尺寸int p; //一个临时的数字用来标记当前操作的数组的位置char MidOrder[MaxSize]; //用来存储中序遍历顺序的数组char PreOrder[MaxSize]; //用来存储先序遍历顺序的数组//初始化的方法void Init(原创 2012-12-05 21:47:26 · 2185 阅读 · 0 评论 -
[C++]数据结构:算法分析之八皇后问题
/************************************************************************//* 八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。/* 该问题是十九世纪著名的数学家高斯1850年提出:/* 在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,/* 即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少原创 2012-11-28 22:43:06 · 2503 阅读 · 1 评论 -
[OpenGL]计算机图形学实验01:一个简单的球体
#include #include #include#define PI 3.14void myDisplay2(){ //画两个顶端的圆形区域 glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); glBegin(GL_TRIANGLE_FAN); glVertex3d(0.0,0.0,1.0); double c = PI/180; fl原创 2012-11-10 21:56:35 · 6188 阅读 · 6 评论 -
[OpenGL]计算机图形学:基于Articulated Models的机械手臂实例
在OpenGL中,大多数复杂模型都是通过简单的部件拼接而成。比如一辆汽车由四个轮胎和车身组成,电脑由键盘屏幕和机身组成。下面举得这个栗子,机械手臂,是一个Articulated Model的实例。每一个部分在节点处相连接,可以通过制定各个节点的角度来指定模型的状态。从图中可以看出,它大概是由三个部分组成:底座,下臂,上臂。每一个部件在各自坐标系中的自由度如下:原创 2012-12-27 22:41:05 · 4654 阅读 · 0 评论 -
[C++]项目中的代码注释规范(整理)
1 源文件头部注释列出:版权、作者、编写日期和描述。每行不要超过80个字符的宽度。示例:/*************************************************Copyright:Call_Me_WhyAuthor:whyDate:2010-08-25Description:Something about C++*********原创 2013-03-11 12:15:07 · 10517 阅读 · 0 评论 -
[C++]我再也不想在任何头文件中看到using namespace xxx这种句子了(译)
原文的传送:I don’t want to see another “using namespace xxx;” in a header file ever again 在这里,我毫不回避地说了这句话。 作为一个开发者/团队领导者,我经常会去招聘新的项目成员,有时候也帮助其他组的人来面试应聘者。作为应聘流程之一,我经常要求应聘者写一些代码,因此我检查过相当多的代码。在最翻译 2013-01-22 10:26:00 · 2314 阅读 · 2 评论 -
[OpenGL]计算机图形学实验02:多边形世界
/************************************************************************//*Test02: Polygon world/*Author: Wang Haiyang/*Date: 2012/11/20/*Email: wanghaiyang@139.me原创 2012-11-20 00:46:03 · 3216 阅读 · 3 评论 -
[OpenGL]利用地球绕日旋转做的简单的光照效果
#include #define WIDTH 400 #define HEIGHT 400 static GLfloat angle = 0.0f; void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 创建透视效果视图 glMatrixMode(GL_PROJEC原创 2012-11-17 23:32:58 · 3286 阅读 · 0 评论 -
[C++]数据结构实验05:二叉树的遍历
/*************************************************************//* 三、二叉树的遍历/* 1.输入一个完全二叉树的层次遍历字符串,创建这个二叉树,/* 输出这个二叉树的前序遍历字符串、中序遍历字符串、/* 后序遍历字符串、结点数目、二叉树高度。/* 2.输入二叉树前序序列和中序序列(各元素各不相同),/* 创建这个二叉树,原创 2012-12-01 15:22:12 · 2786 阅读 · 0 评论 -
[C++]数据结构课程设计:迷宫老鼠1.0
/************************************************************************* 版权所有: 汪海的实验室 作者 : 汪海洋 日期 : 2013-03-11 描述 : 数据结构课程设计,使用堆栈解原创 2013-03-11 13:38:19 · 7894 阅读 · 8 评论 -
[C++]数据结构:公式化描述的线性表LinearList的创建与使用
//基于公式的类LinearList#include #include #include using namespace std; templateclass LinearList{ public: LinearList(int MaxListSize=10); //构造函数,默认最大值为10 ~LinearList(){delete []element;}原创 2012-11-21 20:56:20 · 2695 阅读 · 2 评论 -
[C++]数据结构实验03:链式结构线性表的基本操作
/**********************************************************************************************************************************//* 实验三:线性表操作/* 1.创建线性表类。线性表的存储结构使用链表。/* 2.完成表首插入元素、删除指定元素、搜索表中是否有原创 2012-11-21 21:25:28 · 3016 阅读 · 0 评论 -
[C++]数据结构实验04:使用堆栈进行简单的四则运算
/************************************************************************************//* 实验04:堆栈的应用/* 1.输入一个数学表达式(假定表达式输入格式合法),计算表达式结果并输出。/* 2.数学表达式由单个数字和运算符“+”、“-”、“*”、“/”、“(、) ”构成,/* 例如 2 + 3原创 2012-11-24 10:56:35 · 3817 阅读 · 0 评论 -
[C++]数据结构:线性表的公式化描述和链式描述的结构特点与基本操作
线性表的公式化描述的基本特点:关于线性表的概念,可以简单的理解成按照一定顺序排列的列表。但是这里的顺序并不是指元素内容的有序,而是指元素的位置的有序。就好像是有一个队伍,不一定按照高矮胖瘦进行排列,但是在队伍中每个人按照前后站着谁,都有自己相对固定的位置。再介绍一下公式化描述的概念。公式化描述是采用数组来表示一个对象的实例,数组中的每个位置为单元或者节点,每个数组单元需要足够大以便能容纳数原创 2013-01-05 16:23:14 · 3674 阅读 · 0 评论 -
[C++]数据结构:从m叉搜索树谈到B-树的结构特点、阶数、高度、元素个数之间的关系
在介绍一下B-树之前,我们先来介绍一下m叉搜索树的概念。m叉搜索树必须满足以下结构特点:1)在对应的扩充搜索树(用外部节点代替零指针),每个内部节点最多可以有m个子女即m-1个元素。2)每个含有p个元素的节点有p+1个子女。3)考察含有p个元素的任意节点,设k1……kp是这些元素的关键值。这些元素按顺序排列,即k123……p。设c0……cp是节点的p+1个孩子。原创 2012-12-30 00:58:35 · 5761 阅读 · 1 评论 -
[C++]数据结构:散列表HashTable的实现与简单应用
#include using namespace std;templateclass HashTable{ public: HashTable(int divisor=11); ~HashTable(){delete[]ht;delete[]empty;} bool Search(const K&k,E&e)const; Hash原创 2012-12-05 18:02:01 · 2487 阅读 · 1 评论 -
[C++]数据结构:有序链表SortedChain的基本实现与操作
#includeusing namespace std;templateclass SortedChainNode{ public: E data; SortedChainNode *link;};templateclass SortedChain{ public: SortedChain(){first = 0;} ~SortedC原创 2012-12-03 18:53:19 · 1799 阅读 · 0 评论 -
[VC++]如何在win32程序中加入右击菜单并添加响应
0.先说一下如何在win32程序中打开控制台,复制以下代码即可:#include "io.h"#include "fcntl.h"void InitConsole() { int nRet= 0; FILE* fp; AllocConsole(); // 调用产生控制台的窗口 nRet= _open_osfhandle((long)原创 2012-12-13 18:58:46 · 2945 阅读 · 0 评论