- 博客(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
原创 “打擂台'找最大数
遇到比较多的数据时,我们通常采用"打擂台"的方法处理#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
原创 栈的应用 逆波兰式
#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关注的人