自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 文件描述符fd与文件指针FILE*的关系

文件指针是指向一个FILE的结构体,这个结构体里包括一个文件描述符(在Windows下也被称为文件句柄)和一个I/O缓冲区。文件描述符用于ANSI C标准的IO库调用中,用于标识文件。FILE中包含文件描述符元素,可以用fopen()直接获取指针fp,然后使用fp获得fp中所包含文件描述符fd的信息。文件描述符应该是唯一的,而文件指针却不是唯一的,但指向的对象是唯一的。FILE *比fd更

2017-04-27 13:56:11 5137 1

原创 C++实现稀疏矩阵的压缩存储

什么是稀疏矩阵呢,就是在M*N的矩阵中,有效值的个数远小于无效值的个数,并且这些数据的分布没有规律。在压缩存储稀疏矩阵的时候我们只存储极少数的有效数据。我们在这里使用三元组存储每一个有效数据,三元组按原矩阵中的位置,以行优先级先后次序依次存放。下面我们来看一下代码实现。#include#includeusing namespace std;templateclass SparseMat

2017-04-23 15:12:03 6576

原创 Linux中的僵尸进程与孤儿进程

1、僵尸进程一个子进程在其父进程没有调用wait()或waitpid()的情况下退出,这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait,则该僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。运行结果2、孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由in

2017-04-21 21:16:32 994

原创 输出全排列

//输出全排列,时间复杂度近似为O(N!)void Prem(int* arr, int size, int N){ int idx = 0; if(size == N) { for(idx = 0; idx < size; idx++) { cout<<arr[idx]<<" "; } cout<<endl; } else { for(idx = N;

2017-04-21 15:12:39 1047

原创 括号匹配算法

bool IsBracket(char ch){ if(ch == '(' || ch == '[' || ch == '{' || ch == ')' || ch == ']' || ch == '}') { return true; } return false;}bool MatchBracket(char* str, size_t size){ int idx = 0

2017-04-21 15:05:07 963

原创 简易迷宫--递归算法实现

#include#includeusing namespace std;#define MaxCol 10#define MaxRow 10struct Seat//定义一个表示位置的结构体{ Seat(int x,int y) :_x(x) ,_y(y) {} int _x; int _y;};class Maze{public: Maze(int ar

2017-04-21 14:21:23 1247

原创 实现逆波兰表达式(后缀表达式)的运算结果

在栈的应用中有一个最经典的例题,那就是逆波兰表达式的求值。enum OPERATOR//定义一个枚举类型{ DATA,//数字 ADD,//下面为操作 SUB, MUL, DIV,};struct Cell//定义一个结构体包含数据及操作{ OPERATOR op; int data;};int CalaRPN(Cell cell[],size_t size)//计算

2017-04-21 13:50:12 1794

原创 实现Stack的基本操作

简单来说,栈是一种特殊的线性表,只允许在固定一端(栈顶)进行插入和删除元素的操作。因此栈又被称为后进先出的线性表。下面就来看看它可以进行哪些基本的操作。在进行扩容时,如果是对栈中基本数据类型的操作我们使用浅拷贝memcpy,否则用=进行拷贝,所以在这里用到了类型萃取。下面看一下代码实现。/////////////////////实现Stack的基本操作/////////////////////

2017-04-21 13:02:36 1329

原创 实现循环队列的基本操作

templateclass Queue{public: Queue(size_t capacity = 5) :_front(0) ,_rear(0) ,_capacity(capacity+3)//加一个常数防止传参为0程序奔溃 ,_count(0) { _pData = new T[_capacity];//开辟空间 } void Push(const T&

2017-04-21 12:34:36 1877

原创 C++实现对称矩阵以及压缩存储

#includeusing namespace std;///////////////////////////实现对称矩阵以及压缩存储/////////////////////////////////////templateclass SymmetricMatrix{friend ostream& operator& s);//声明一个友元重载输出符号public: Symmetr

2017-04-21 11:59:59 3018

原创 数据结构--递归练习

///////////////////////////////////////递归练习//////////////////////////////////////#includeusing namespace std;//求前N个自然数之和int Sum(int N){ if(N == 1) return 1; return Sum(N-1)+N;}//求N的阶乘int

2017-04-20 22:43:32 944

原创 C语言实现顺序表--静态

///////////////////////////C语言实现静态顺序表///////////////////////#include#include#define MaxSize 5typedef int DataType;typedef struct SeqList{ DataType arr[MaxSize]; size_t size;}SeqList,*pSeqLi

2017-04-12 18:11:06 679

原创 C语言实现单链表

#include#include#includetypedef int DataType;typedef struct Node{ DataType data;//数据域 struct Node* next;//保存下一个节点地址的指针域}Node,*PNode;void InitList(PNode* pHead)//初始化 传二级指针{ assert(pHead);

2017-04-12 18:08:58 625

原创 shared_ptr 循环引用问题

前面学习智能指针的时候已经模拟实现过C++标准库中的auto_ptr两种方法还有scoped_ptr、scoped_array、以及shared_ptr

2017-04-06 17:33:02 858

原创 浅析C++标准库与boost库中的智能指针

什么是智能指针呢,它是行为类似于指针的类对象,但这种对象还有其他功能。我们为什么要封装智能指针类对象呢?这是因为C++中的动态内存需要用户自己来维护,动态开辟的空间,在出函数作用域或者程序正常退出前必须释放掉,否则会造成内存泄漏,所以我们会定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。再来看下面一段程序,这里一段空

2017-04-04 23:43:41 581

原创 Linux下简易进度条的实现

生活在高科技时代的我们,在电脑或手机上游戏娱乐时,通常会看到加载页面或者下载东西的过程中会出现一个不断变长直到填满整个小长方形的条状物,专业一点来说它就叫做进度条。下面我们可以用C语言代码自己来实现一个简易的进度条。首先要实现进度条我们就要了解它的原理。在C语言中对printf函数来说,它的输出会先被写在一段缓冲区中,用回车换行进行行刷新。而不是直接输出到显示器上。在Linux下,/n

2017-04-04 20:26:20 277

空空如也

空空如也

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

TA关注的人

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