c++ 学习笔记
文章平均质量分 79
Y_23k_bug
这个作者很懒,什么都没留下…
展开
-
c++ volatile
volatile:用法:#includeint main(){ const int n=100; volatile const int m=200; int *p=(int *)&n; *p=123; p=(int *)&m; *p=456; std:原创 2013-07-12 07:18:21 · 659 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结转载 2013-07-26 10:25:42 · 5918 阅读 · 1 评论 -
基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
二分法查找算法:#includeusing namespace std; int binarysearch(int * a,int n,int num); int main(){ inta[5]={9,8,5,7,3}; for(inti=0;i for(intj=i+1;j原创 2013-07-25 09:53:47 · 3263 阅读 · 2 评论 -
哈夫曼树
1. 哈夫曼树的基本概念 哈夫曼树( Huffman )又称最优二叉树,是一类带权路径长度最短的树,有着广泛的应用。 在讨论哈夫曼树之前首先需要弄清楚关于路径和路径长度的概念。树中两个结点之间的路径由一个结点到另一结点的分支构成。两结点之间的路径长度是路径上分支的数目。树的路径长度是从根结点到每一个结点的路径长度之和。 设一棵二叉树有 n 个叶子结点,每个叶子结点拥有一个权值W转载 2013-07-26 08:27:39 · 1180 阅读 · 0 评论 -
一般树的存储
一般树的存储:1) 双亲表示法: 求父节点方便0A-11B02C03D04E2 双亲表示法:是使用数组来存储树0原创 2013-07-26 07:26:12 · 1053 阅读 · 0 评论 -
c++设计模式—代理模式
代理模式:代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。RealSubject类,定义Proxy所代表的真实实体。Proxy类,保存一个引用使用代理可以访问实体,并提供一个与Subject的接口相同原创 2013-08-01 17:55:08 · 936 阅读 · 0 评论 -
双链表的简单实现
#includeusing namespace std; templatestruct DLNode{ T data; DLNode*prior; DLNode*next; DLNode():data(T()),prior(NULL),next(NULL){}}; templatec原创 2013-08-02 08:59:38 · 608 阅读 · 0 评论 -
c++设计模式—模板方法模式
模板方法模式:模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。AbstractClass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现,顶级逻辑也有可能调用一些原创 2013-08-02 10:49:21 · 1051 阅读 · 0 评论 -
理解malloc、new工作原理
理解malloc的工作原理 malloc使用一个数据结构(链表)维护分配空间 链表的构成:分配的空间/指向上一个空间的指针/指向下一个空间的指针/当前空间的大小信息等 注:对malloc分配的空间不要越界访问。因为容易破坏后台维护的结构。导致malloc/free/calloc/realloc不能正常工作 例子:Linux下原创 2013-07-27 14:14:29 · 1275 阅读 · 0 评论 -
图存储结构—邻接表实现
#include#includeusing namespace std;#define MAX_VEX 50template //邻接表的链表结构struct LNode{int Index;LNode *next;LNode():Index(0),next(NULL){}};templat原创 2013-08-10 01:20:02 · 1065 阅读 · 0 评论 -
c++设计模式—工厂方法模式
工厂方法模式:工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法一个类的实例化延迟到其子类。 简单工厂模式和工厂方法模式的区别: 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,出去了与具体产品的依赖。如果我们要去修改程序的时候,我原创 2013-08-01 20:54:11 · 844 阅读 · 0 评论 -
c++ 学习笔记 c++ io
输入输出流1.io对象要求能转换成bool类型。对处于正常状态的io对象转成true,对处于错误状态的io对象转成false2.处于错误状态的io对象拒绝执行io操作,.clear()清除错误状态( 不是清楚缓冲区)清除输入缓冲区用.ignore(字符数,‘结束字符’);这两个版本都可以用第三个参数指定到用什么字符为止,默认是'\n'例子:#includ原创 2013-07-11 15:33:50 · 880 阅读 · 0 评论 -
线索二叉树
线索二叉树的原理: 如图所示,我们会发现许多指针域并没有充分利用起来,而是有很多空指针域。如何利用这些空指针域呢? 我们可以把这颗二叉树做中序遍历后,将所有空指针域的rchild,改为指向它的后继节点改进如图: 同理:我们可以把空指针域的lchild指向它的前驱节点。其实一颗线索二叉树,等原创 2013-07-29 14:11:55 · 1131 阅读 · 0 评论 -
c++设计模式—策略模式
策略模式(Strategy):策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 Strategy类,定义所有支持的算法的公共接口://抽象算法类class Strategy{ //算法函数public:virtual void AlgorithmInterface()=0;原创 2013-07-30 15:39:39 · 739 阅读 · 0 评论 -
c++设计模式—简单工厂模式
C++ 简单工厂模式: 例如用面向对象的方法写一个计算器的控制台程序。一般我们会先写个运算类作为基类,该类中有个getResult的虚函数。然后再写相应的子类(加、减、乘、除)并多态的实现getResult函数。在main函数中,当我们选择了那种运算符就初始化一个运算类的对象。 “简单工厂模式”,就是说,到底要实例化谁,将来会不会增加实例化对象,应该考虑一个单独的类来做这个原创 2013-07-30 15:34:00 · 819 阅读 · 0 评论 -
c++链表简单实现
链表: #includeusing namespace std; templatestruct Node{ Tdate; Node * next; Node():date(T()),next(NULL){}}; templateclass LinkList{ public: LinkList() {原创 2013-07-24 08:32:50 · 971 阅读 · 0 评论 -
c++ 栈,队列,循环队列 简单实现
栈:#includeusing namespace std;templatestruct Node{T date;Node * next;Node():date(T()),next(NULL){}};templateclass Stack{public:Stack(){top=bottom=new Node;原创 2013-07-24 09:49:53 · 1042 阅读 · 0 评论 -
c++ 简单实现优先级队列
优先级队列: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。 #includeusing namespace std; templatestruct Node{ T date; //元素 Node* next; int Index; //优原创 2013-07-24 15:53:30 · 1005 阅读 · 0 评论 -
二叉树-排序二叉树的简单实现
二叉树-排序二叉树#includeusing namespace std; /* 二叉树的节点 date : 数据 left :指向二叉树的左子树 right:指向二叉树的右子树*/templatestruct Node{ T date; Node* left; Node* right原创 2013-07-24 20:59:47 · 1091 阅读 · 0 评论 -
c++设计模式—装饰模式
装饰模式: 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就是增加功能,装饰模式比生成子类更为灵活。 Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继续了Component,从外类来扩展Co原创 2013-08-01 16:41:33 · 770 阅读 · 0 评论 -
c++ 实现图的存储结构—邻接矩阵
#include#includeusing namespace std;#define Max_Vex 256templateclass MatUnDirectedGraph{public:MatUnDirectedGraph(){num=5;VNodes=new VNode[num];nodecount=0;edgeco原创 2013-08-09 20:33:08 · 1910 阅读 · 0 评论