自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 求二叉树中最远的两个节点的距离

#define _CRT_SECURE_NO_WARNINGS 1#include#include#includeusing namespace std;struct BinaryTreeNode{ BinaryTreeNode* _left; BinaryTreeNode* _right; int data;};class BinaryTree{public:

2016-08-28 16:54:56 772

原创 两个节点的最近公共节点

二叉树中 找两个结点的最近的公共祖先结点#pragma once#include using namespace std;struct Node{ Node * left; Node * right; int value; Node( int v )

2016-08-22 21:20:01 696

原创 利用http协议实现小型Web服务器

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HT

2016-08-21 09:30:09 3312 1

原创 epoll 实现I/O复用

epoll是Linux特有的I/O复用函数,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率;并且epoll使用一组函数来完成任务,而不是单个函数,它无须遍历整个被侦听的描述符集,只要遍历那些内核I/O时间异步唤醒而加入ready队列的描述符集合即可。但epoll需要使用一个额外的文件描述符,来唯一标识内核中的这个事件表。1、这个文件描述符使用epoll_create

2016-08-15 00:39:34 508

原创 poll实现I/O多路复用

poll函数原型参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于socket连接比较多的情况下,在一定程度上可以提高处理的效率;这一点与select()函数不同,调用select()函数之后,select()函数会清空它所检测的socke

2016-08-12 13:47:38 538

原创 程序运行 栈帧分析

下面程序,在主函数中未调用,但程序会重启p是形参a的地址p--后p是fun1函数运行完后调用的下一条指令的地址,这里用*p=fun把下一条指令的地址修改成了函数fun的地址,自然fun1运行完后就进入了fun函数的执行压栈是a先压栈,b后压栈,压栈时栈顶向低地址的方向前进,变量a在变量b的上面

2016-08-09 10:51:06 319

原创 seclect函数

select函数select函数主要是用来实现多路复用输入和输出模型,select系统调用是用来让我们监视多个文件句柄的状态变化的。程序会停在select处等待,直到被监视的文件句柄有一个或多个发生了状态。select函数:int select(int nfds,fd_set *readfds,fd_set writefds,fd_set  * exceptfds,

2016-08-09 01:18:30 1446

原创 大数运算

大数运算的实现 主要功能:项目解决了巨大整数的计算问题。 实现方式:通过对输入输出和基本运算符的重载,实现大整数的运算功能。 使用技术及环境:VS2013 ,C++,运算符重载。#define _CRT_SECURE_NO_WARNINGS 1#include "BigData.h"#include<iostream>using namespace std;void FunTest()

2016-08-02 13:05:35 589

转载 欢迎使用优快云-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-08-02 12:52:55 202

原创 Linux进程管理---task_struct结构体

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单元。进程控制块就是task_struct结构体。task_struct是Linux内核的一种数据结构,每个进程都把它的信息放在task_struct这个数据结构里,task_struct包含了这些内容:标识符:描述本进程的唯一标识符,用来区别其他进程。状态:任务状态,退出代码,退出信号等。优先级:相对于其他进程的优先

2016-08-02 10:36:45 372

原创 HuffMan编码--文件压缩

HuffManTree,又称为最优二叉树,是加权路径最短的二叉树。使用贪心算法来构建哈夫曼树。贪心算法:是指在问题求解时,总是做出当前看起来最好的选择。也就是说贪心算法做出的不是整体最优解,而是某种意义上的局部最优解。贪心算法不是对所有的问题都能得到最优解。如下图哈夫曼树我们来分析下文件压缩的原理:如图的哈

2016-07-30 20:20:41 618

原创 Linux中的ctags和Makefile使用

一、Ctags命令  Ctags是vim下方便代码阅读的工具,它可以帮助程序员很容易的浏览代码。先在当前目录建立tags文件650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/82/4E/wKiom1dQ7CnxQTnoAAAEKxtatls193.png" style="float:none;" title="1.png" alt=

2016-06-09 22:02:51 695

原创 Centos中vim的配置

一、vim简介    多模式编辑器,可视化操作不仅可以在终端运行,也可以运行于 window、 mac os、windows。1、vim的基本概念  基本上vim可以分为三种状态(其实有好多模式,目前掌握这3种即可),分别是命令模式、插入模式和底行模式,各模式的功能区分如下:1) 命令行模式command mode)  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mo

2016-06-09 22:02:48 5392

原创 回顾一些小函数

1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。 #define _CRT_SECURE_NO_WARNINGS 1#include void print_kjb(int line){ int i = 0; for (i = 1; i <=line; i++) { int j = 0; for (

2016-06-09 22:02:45 241

原创 Linux----find命令

find命令   find是一个很强大的命令,它是直接查找硬盘的。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的

2016-06-09 22:02:42 433

原创 多态性与虚函数

多态性:向不同的对象发送同一个消息,不同的对象在接受时会产生不同的行为(即方法)#include using namespace std;class B{public: void print(){cout << "B::print()" << endl;} virtual void show();};void B::show(){cout << "B::show()"

2016-06-09 22:02:39 431

原创 二叉树的相关操作

二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includeusing namespace std;//节点结构templateclass BinaryTreeNode//节点{public:BinaryTreeNode(c

2016-06-09 22:02:36 215

原创 类和对象

三种访问限定符 public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。每个限定符在类体中可使用多次,它的作用域是从该限定符出现开始到下个限定符之前或类体结束前。类体中如果没有定义限定符,则默认为私有的。类的访问限定符体现了向对象的封装性。 #define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace

2016-06-09 22:02:34 221

原创 结构体内存对齐

1.原因:为什么需要内存对齐.1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。2.内存对齐的规则和范例讲述内存对齐之前先看下各种类型的大小,和编译器以

2016-06-09 22:02:31 328

原创 “打擂台&#39;找最大数

遇到比较多的数据时,我们通常采用"打擂台"的方法处理#define _CRT_SECURE_NO_WARNINGS 1#includeint main(){int a, b, c, d, max;scanf("%d%d%d%d", &a, &b, &c, &d);max = a;if (b > max)max = b;if (c > max)max = c;if (d > m

2016-06-09 22:02:28 2814

原创 广义表

广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;#include enum Type{ HEAD,  //头节点 VALUE, //值节点 SUB,   //子表节点};

2016-06-09 22:02:25 385

原创 类和对象的简单应用

#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class Time{public:int hour;int minute;int sec;};void set_time(Time& t)     //定义函数set_time,形参t是引用变量{cin >> t.hour;         //输入

2016-06-09 22:02:22 283

原创 稀疏矩阵的压缩存储

压缩存储值存储极少数的有效数据。使用{row,col,value}三元组存储每一个有效数据,三元组按原矩阵中的位置,以行优先级先后顺序依次存放。#define _CRT_SECURE_NO_WARNINGS 1#include #includeusing namespace std;//三元组的定义templatestruct Triple{ T _value; size_t

2016-06-09 22:02:20 321

原创 对称矩阵及对称矩阵的压缩存储

若设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 <= i <= N-1 && 0 <= j <= N-1),则矩阵A是对称矩阵。以矩阵的对角线为分隔,分为上三角和下三角。    压缩存储称矩阵存储时只需要存储上三角/下三角的数据,所以最多存储n(n+1)/2个数据。对称矩阵和压缩存储的对应关系:下三角存储i>=j,  SymmetricMatrix[i][j] 

2016-06-09 22:02:17 556

原创 利用枚举类型实现统计

口袋中有5种颜色的小球,每次从口袋中任意取3个,问得到3种不同颜色的小球的可能取法?#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;int main(){enum color{red,yellow,blue,white,black};//声明枚举类型colorcolor pri;    //定义

2016-06-09 22:02:14 270

原创 函数的递归与嵌套

有4个人,丁比丙大4岁,丙比乙大4岁,乙比甲大4岁,甲说他的年龄是16岁,求丙的年龄?#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;int Get_age(int n);const int interval = 4;void main(){int age = Get_age(4);cout << "丁的年龄

2016-06-09 22:02:11 708

原创 指向结构体变量的指针引用结构体变量的成员

#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;struct Student{ int num; string name; char sex; float score;};int main(){ Student stu; Student *p = &stu; stu.num =

2016-06-09 22:02:08 1388

原创 栈的应用 &nbsp; 逆波兰式

#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include#include#includeusing namespace std;enum Type{ OP_NUM, OP_SYMBOL,};enum SYMBOL{ ADD, SUB, MUL, DIV,};struct Cell{ Type _type

2016-06-09 22:02:05 306

原创 迷宫问题

#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include#includeusing namespace std;#define N 10#include struct Pos     //定义一个结构体,该结构体用来表示坐标{ int _row; int _col;};void GetMaze(int* a, int n

2016-06-09 22:02:02 203

原创 保护继承

#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class CBase1//定义基类{public://定义公有型成员void SetXY(int a, int b){x1 = a;y1 = b;num1 = 10;}void Show(){cout << "在基类CBase1中,公有型变量y1的

2016-06-09 22:02:00 227

原创 面向对象封装

#includeusing namespace std;class Calc{private://声明私有成员,外部类不能访问 int sum; int diff; int pro; int que;public://声明公有方法,所有类都可以调用 void add(int num1, int num2) { sum =num1 + num2; printf("%d=

2016-06-09 22:01:57 202

原创 模板实现双向链表

#include#includeusing namespace std;templatestruct Node{public: Node(const T& d) :_next(NULL) , _prev(NULL) , _data(d) {} T _data; Node* _next; Node* _prev;};templateclass DList{

2016-06-09 22:01:54 366

原创 模板实现顺序表

#includeusing namespace std;template class Seqlist { public: Seqlist() :_data(NULL) , _size(0) , _capacity(0) { CheckCapacity(); } ~Seqlist() { if (_data != NULL) {

2016-06-09 22:01:51 277

原创 候选人得票统计程序

#includeusing namespace std;struct Person{char name[20];int count;};int main(){Person leader[3] = { "Li", 0, "Zhang", 0, "Sun", 0 };int i, j;char leader_name[20];for (i = 0; i< 10; i++){

2016-06-09 22:01:48 3124 1

原创 双向链表的几种实现

#pragma once#includeusing namespace std;typedef int DataType;//结构体的定义struct Node{ Node(const DataType& d) :_data(d) , _prev(NULL) , _next(NULL) {} Node* _next; Node* _prev; DataType _dat

2016-06-09 22:01:45 300

原创 单链表的相关实现

头文件SList.h#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;#pragma oncetypedef int DataType;struct Node{ Node(const DataType& d) :_data(d) , _next(NULL) {} DataType _

2016-06-09 22:01:42 207

原创 C语言顺序表的几种实现

#include#include#includeusing namespace std;typedef int DataType;#define DEFAULT_INC 9#define DEFAULT_CAPACITY 7class SeqList{public: friend ostream& operator<<(ostream& os, const SeqList&

2016-06-09 22:01:39 338

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除