- 博客(20)
- 收藏
- 关注
原创 利用哈夫曼树实现文件压缩和解压缩
完成文件压缩与解压缩花了近一个星期的时间,期间,花了很遇到不少问题,花了很长时间去调试,最后完成了文本文件的压缩。通过调用库中的优先级队列实现哈夫曼树,基于哈夫曼树最终实现文件压缩。 ## 实现哈夫曼树(利用优先级队列) ## #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<iostream> #include...
2018-08-20 08:20:05
8310
1
原创 进程间通信
一. 实现pipe/msgqueue/sems/shm相关代码 1.实现pipe 1、write() 函数定义:ssize_t write (int fd, const void * buf, size_t count); 函数说明:write()会把参数buf所指的内存写入count个字节到参数放到所指的文件内。 返回值:如果顺利write()会返回实际写入的字节数。当有错误发生时则返...
2018-08-20 07:53:48
238
原创 C++继承
一,概念 1,继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手 段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样 产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现 了由简单到复杂的认知过程。 2,作用: (1)、继承可以减少重复的代码。比如父类已经提供的方法,子类可以直接使用,不必再去实现。 (2)、继承是多态性的前提。当...
2018-05-21 16:40:23
197
原创 mallc
三个函数的申明分别是: void* malloc (size_t size); void* calloc (size_t num, size_t size); void* realloc (void* ptr, size_t size); //ptr 是要调整的内存地 // size 调整之后新大小 都在st...
2018-04-23 14:23:53
457
1
原创 C++类和对象
一.引用. 1. 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器 不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空 间 类型& 引用变量名(对象名) = 引用实体; int a = 10; int& ra = a;(必须和引用实体是同种类型) 2. 引用特性 a. 引用在定义时必须初始化 b. 一个变量可以有多个引用 c. ...
2018-04-12 18:21:23
317
原创 进程控制
编写shell. #include<stdio.h> #include<unistd.h> #include<sys/wait.h> #include<stdlib.h> #include<string.h> void do_shell(int argc,char*argv[]) { pid_...
2018-04-06 17:29:13
136
原创 进程基本概念
1.task_struct结构体: 在Linux下描述进程的结构体为task_struct结构体。它将会被装载到RAM(内存)里并且包含着进程的信息。 task_struct内容分类: .标识符:描述本进程的唯一标识符。 .状态:任务状态,退出代码等。 .优先级: .:程序计数器:程序中即将被执行的下一条指令的地址。 .内存指针:程序代码和进程相关数据的指针,还有和其他...
2018-04-01 11:46:11
285
原创 各种编译器和编辑器对比
对比编辑器之间的区别和优缺点. vim是从vi发展出来的一个文本编辑器。代码补完、编译错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 1 、Vim Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 2 、Eclipse Eclipse是一款很酷的开源代码编辑...
2018-03-30 17:02:55
2576
原创 linux权限及指令
linux权限及指令 1.进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限. cd:a.语法 cd 目录名(进入目录) b.所需权限x touch:a.语法 touch 文件名(创建文件) b.所需权限wx ls:a.语法 ls (显示当前目录下的所有文件) b.所需权限rx rm...
2018-03-23 16:05:06
280
原创 辗转相除法求最大公约数的原理
假设有两个数x和y,存在一个最大公约数z=(x,y),即x和y都有公因数z, 那么x一定能被z整除,y也一定能被z整除,所以x和y的线性组合mx±ny也一定能被z整除。(m和n可取任意整数) 对于辗转相除法来说,思路就是: 若x>y,设x/y=n余c, 则x能表示成x=ny+c的形式, 将ny移到左边就是x-ny=c,由于一般形式的mx±ny能被z整除, 所以等号左边的x-ny(...
2018-02-08 20:03:54
5358
原创 【单链表】环的入口点 原理理解
题目:试判断一个链表中是否有环?若请找出该链表的环的入口结点? 1:判断链表是否带环: 判断有环的方法就是用两个快慢指针p1、p2,p1的速度为P2的两倍,两个指针同时从链表的头结点开始出发,当两个结点再一次相遇且相遇点不是最后一个结点时,说明此链表有环。2:、若有环,找环的入口: ① 当P1和P2在PM相遇时: P1走过的路程(结点数):S快=L+X+n*R; P2走过的路程(结点
2017-12-28 12:20:18
2002
1
原创 字符串求长度
char str[20]=”0123456789”; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0’为字符串结束标记。 从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。 strlen(…)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了
2017-12-27 22:33:15
3273
原创 交换两个数字的值
交换俩个数字 1^0=1; 1^1=0; 交换 a和b的值 a=a^b; b=a^b;//此时a=a^b, //b=a^(b^b), //b=a^0; //b=a; b=a^b //同理可得此时b=a;
2017-12-06 19:24:32
271
原创 指针
1 指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,即指向数组的指针 eg int a[4]* 指针数组: 因为[]优先级高于,数组a中有4个元素都为int型指针 int (*a)[4] 数组指针:a先和*结合,说明a是一个指针变量,然后指着指向的是一个大小为4个整型的数组。
2017-11-24 16:06:00
210
原创 扫雷
game.h #ifndef __GAME_H__ #define __GAME_H__ #include #include #define ROWS 6 #define COLS 6 #define num 4 //雷数 void game(); void set_mine(int arr[ROWS][COLS], int row, int col); void show_set
2017-10-22 22:50:17
278
原创 三子棋
game.h #endif#ifndef __GAME_H__ #define __GAME_H__ #include #include #define ROWS 3 #define COLS 3 void game(); char check_win(char arr[ROWS][COLS], int rows, int cols); static int is_full(char
2017-10-22 22:41:48
164
原创 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-10-14 22:27:45
181
原创 数组相关知识
一:一维数组 1:int arr[ ] []内为常量:int a=1;a+2; []下标引用操作符 char arr1[] = "abc"; 内存:abc\n char arr2[3] = {'a','b','c'}; 内存存放:abc 2:数组为自定义类型。int arr[10]={0}; sizeof(arr) 大小输出:40
2017-10-14 21:51:45
183
原创 C语言操作符总结
一,分类 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 二, 1,算术操作符 + - * / % 2,移位操作符 a eg : b >> 右移操作符 首先右移运算分两种:1. 逻辑移位:左边用0填充,右边丢弃
2017-10-08 15:14:57
327
原创 我的第一篇博客2017
大学生活过的不是想象中的那样精彩,但是时间还是过的飞快。我已经是一名大三的学生了,但我不知道有什么可以比较擅长的东西可以为自己的简历加分。现在想想有很多事情应该早早准备,不然错过了好的机会就会成为心中永远的痛。 所以我要从新努力学习编程,在平时学习时首先把基础的书读懂,然后多上机实践,最后总结和分享自己所学习到东西,为找一份自己满意的工作努力。 1>写一个自我介绍。 2>列出你编程的目标。
2017-09-16 21:52:48
401
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人