- 博客(38)
- 收藏
- 关注
转载 页面置换算法
转载http://c.biancheng.net/cpp/html/2614.html,一个比较好的学习网站,有C,C++操作系统,推荐给大家进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区。选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内
2016-08-31 20:37:05 509
转载 c++之指针作为函数参数传递的问题
原创文章,转载请注明出处,谢谢!作者:清林,博客名:飞空静渡 博客地址:http://blog.csdn.net/fjb2080 其实,对于C 或者C++ ,最难的一块地方估计就是指针了。指针是强大的,但也是很多人载在这里的地方。 前段时间写了一篇文章《C ++之 数组与指针的异同 》对C 和C ++中的指针做了一个初步的讲解。这次将讲解一下
2016-08-30 18:09:44 1304
原创 面试13:在O(1)时间删除链表结点
O(n)常规:链表开头开始,顺序遍历查找要删除的结点,并在链表删除该结点h的next指向要删除的结点i,h->next指向i的下一结点j,此时删除j保证链表不断开这种方法要找到删除结点的前一结点O(1)把下一结点的内容复制到i,i的指针指向j的下一结点1)删除结点在链表尾部,没有下一结点,只能顺序遍历得到该结点的前序结点,完成删除2)链表只有一个结点删除结点后把
2016-08-30 00:55:20 358
原创 面试45:圆圈最后剩下的数字(约瑟夫环)
1)int LastRemaining(unsigned int n,unsigned int m){ if(n<1||m<1) return -1; unsigned int i=0; listnumbers; for(i=0;i<n;++i) numbers.push_back(i); list::iterator current=numbers.begin(); wh
2016-08-27 20:46:57 512
转载 构造函数为什么不能是虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造
2016-08-27 17:29:42 417
原创 C++要点
定义为volatile的变量有什么作用?一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量
2016-08-27 17:14:05 510
转载 面试之进程线程
线程概念性问答题第一题:线程的基本概念、线程的基本状态及状态之间的关系?线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进
2016-08-27 16:21:55 392
转载 C++内存管理
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃
2016-08-26 20:26:41 500
原创 反转链表
ListNode* ReverseList(ListNode* pHead){ ListNode* pReversedHead=NULL; ListNode* pNode=pHead; ListNode* pPrev=NULL; while(pNode!=NULL) { ListNode* pNext=pNode->m_pNext; if(pNext==NULL) pRe
2016-08-26 18:24:24 401
原创 面试1~3剑指offer
面试题1:赋值运算符函数注意点:1)返回值为引用,最后return *this,只有返回一个引用才能连续赋值。2)传入参数为常量引用,减少一次复制构造函数,提高代码效率。const引用防止修改。3)释放实例自身已有内存,防止内存泄露。4)传入参数和当前实例是否为同一实例。同个则不赋值直接返回。同个的话,释放自身内存,传入参数的内存也同时释放。char *data
2016-08-25 21:24:57 348
原创 排序算法之插入排序
稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置) 。常用的插入排序有:直接插入排序、折半插入排序它们划分的依据是在排好序的序列中寻找插入位置所使用方法的不同。
2016-08-25 19:45:03 279
转载 C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R
2016-08-24 19:53:02 210
转载 哈希表续(代码)
/* 数据结构C语言版 哈希表 */#include #include #define NULLKEY 0 // 0为无记录标志 #define N 10 // 数据元素个数 typedef int KeyType;// 设关键字域为整型 typedef struct{ KeyType key; int ord;}ElemType; // 数据元素类型 // 开放定址
2016-08-22 21:22:37 323
原创 哈希表
哈希表又称散列表。 哈希表存储的基本思想是:以数据表中的每个记录的关键字 k为自变量,通过一种函数H(k)计算出函数值。把这个值解释为一块连续存储空间(即数组空间)的单元地址(即下标),将该记录存储到这个单元中。在此称该函数H为哈希函数或散列函数。按这种方法建立的表称为哈希表或散列表。k1≠k2,但H(k1)=H(k2),这种现象称为冲突。具有不同关键字值而具有相同哈希地址的对象称“同
2016-08-22 20:53:43 1401
原创 树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构){CSDN:CODE:1843166}
2016-08-21 19:19:21 204
原创 暴力字符串匹配
从文本中寻找匹配模式的子串,即求出第一个匹配模式的子串在文本中的开始位置(子串最左元素的下标)。其中:文本——给定的由n个字符组成的串 模式——指定的由m个字符组成的串将模式对准文本的前m个字符从左往右进行比对,如果其中有一个字符不匹配,模式往右移动一位继续下一个m个字符的比对。伪代码:BruteForceStringMatch(T[0
2016-08-20 18:34:30 599
转载 动态规划
作者:Hawstein出处:http://hawstein.com/posts/dp-novice-to-advanced.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。前言本文翻译自TopCoder上的一篇文章: Dynamic Programmin
2016-08-20 18:24:21 328
原创 大整数乘法
整数乘法问题: 设A和B为两个N位的整数,计算它们的乘积A · B。要执行一位乘法多少次? N^2次分治法思想令N为偶数,则A和B可表示为其中a1和a2分别为A的前半部和后半部。bl 和b2则分别为B的前半部和后半部。如果按下述方法得到积(多项式相乘) 估算时间效率是多少(即需要多少次一位乘法)?则要4次N/2位乘法,即N2次一位乘法。因此这种方
2016-08-19 18:06:39 940
原创 排序算法之合并排序
合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。算法思路: 若n为1,算法终止;否则,将n个待排元素分割成k(k=2)个大致相等子集合A、B,对每一个子集合分别递归排序,再将排好序的子集归并为一个集合。分为两部分:一.递归算法二.归并排序C++代码(百度百科)
2016-08-19 11:20:15 891
原创 排序算法之冒泡排序
原理:比较相邻的元素,将大的元素交换到右边的位置,重复多次后,最大元素就“沉淀”到列表的最后一个位置。第二遍将第二大元素沉下去,n-1遍后结束。例题:对序列 {89,45,68,90,29,34,17}用冒泡排序算法进行排序第1遍: {8945,68,90,29,34,17} //比较相邻元素 {45,89 68,90,29,34,17}
2016-08-19 11:05:33 319
转载 操作系统基础
转载自http://www.cnblogs.com/zyf-zhaoyafei/p/4714598.html,方便学习一、操作系统引论操作系统目标1:方面性,2:有效性,3:可扩展性,4:开放性 操作系统基本特性1:并发、2:共享、3:虚拟、4:异步 描述多道批处理、分时、实时操作系统的特点各是什么? 批处理操作系统:多道
2016-08-18 23:34:00 437
原创 分治法
分治法的基本思想:将规模为N的问题分解为k个规模较小的子问题,使这些子问题相互独立可分别求解,再将k个子问题的解合并成原问题的解.如子问题的规模仍很大,则反复分解直到问题小到可直接求解为止。 在分治法中,子问题的解法通常与原问题相同,自然导致递归过程。通过分治法解决大问题的时间等于所有解决小问题的时间?T(n)=aT(n/b)+f(n)递推式的解法
2016-08-18 23:06:05 179
原创 排序算法之选择排序
原理:扫描整个列表,找出最小(或最大)元素,然后将最小(或最大)元素与第一个元素交换位置。从第二个元素开始扫描列表,找出n-1个元素中的最小(或最大)元素,将最小(或最大)元素与第二个元素交换位置,如此类推,做n-1遍后排序结束例题:对序列 {89,45,68,90,29,34,17}用选择排序 算法进行排序第1遍: {89,45,68,90,29,34,17} //求最小元素
2016-08-18 21:45:19 566
原创 排序算法之堆排序
堆排序它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前 和排序后他们的相对位置不发生变化)前提理解:大根堆和小根堆:都是完全二叉树,根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆,又称最小堆。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆。大根堆的要求是每个节点的值都
2016-08-16 21:55:29 286
原创 union总结
union成员变量共享一段内存,同一时间只能储存其中一个成员变量的值struct与union1)联合默认访问权限也是公有的,并且,也具有成员函数2)共用体和结构体都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共用体只存放了一个被选中的成员, 而结构体的所有成员都存在。3) 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构体的不
2016-08-16 11:52:35 498
转载 排序算法之二分查找
二分查找又称折半查找优点是比较次数少,查找速度快,平均性能好缺点是要求待查表为有序表,且插入删除困难。1.必须采用顺序存储结构 2.必须按关键字大小有序排列。二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x.
2016-08-13 17:44:44 464
转载 排序算法之快速排序
(百度百科)快速排序(Quicksort)是对冒泡排序的一种改进。数组是A[0]……A[N-1]任意选取一个数据(通常选用数组的第一个数)作为关键数据所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:
2016-08-13 16:59:45 726
原创 斐波那契数列
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)特别指出:第0项是0,第1项是第一个1。1.递归: 坏处是n很大时,发生溢出intFibonacci(intn) { if(n1)
2016-08-09 20:57:29 425
原创 求两个正整数的最大公约数
辗转相除法 f(x, y) = f(y, x%y)辗转相减法 1.任意给定两个正整数a和b; 2.若a和b不相等,则执行第3步; 3.选择a、b中较大者,将较大者与较小者的差赋值给较大者; 4.判断重新赋值后的a和b是否相等,若不相等则继续执行第3步,否则执行第5步; 5.返回a或b。
2016-08-07 22:02:02 791
原创 Linux每天一点目录处理命令
绝对路径:根目录(/)起,/usr/share/doc,对文件名正确性来说,其正确度要好相对路径:/usr/share/doc->/usr/share/man cd ../man 有时切换方便. 代表此层目录.. 代表上一层目录- 代表前一个工作目录~代表“目前用户身份”所在的主文件夹~account代表account这个用户的主文件夹常见的
2016-08-05 17:25:15 225
原创 Linux每天一点Linux文件内容查阅
Linux文件内容查阅简单介绍:cat:由第一行开始显示文件内容tac:由最后一行显示文件内容,cat倒写nl:显示的时候顺便输出行号more:一页一页地显示文件内容less:与more类似,但它可以向前翻页head:只看头几行tail:只看结尾几行od:以二进制的方式读取文件内容catcat弊端:文件内容行数过长,来不及在屏幕上看到
2016-08-03 22:01:52 259
原创 关联容器
{CSDN:CODE:map}关联容器与顺序容器根本不同:关联容器的元素按关键字来保存和访问;顺序容器元素按在容器中的位置保存和访问map multimap 头文件map 关键字-值对set multiset 头文件set 关键字无序容器 头文件unordered_map unordered_setmap使用{CSDN:CODE:1804
2016-08-03 16:56:47 284
原创 Linux每天一点文件与目录的默认权限与隐藏权限
文件的默认权限:umask指定目前用户在新建文件或目录时候的权限默认值查询:umask0022umask -Su=rwx,g=rx,o=rx默认情况;文件:不需要执行x,最大为666默认权限:-rw-rw-rw-目录:x关乎能否进入此目录有关,权限全部开放,777drwxrwxrwx若umask为022,user没有被拿掉任何权限,g
2016-08-01 22:12:53 289
原创 Linux每天一点修改文件时间或创建新文件
修改文件时间或创建新文件:touch重要的三个时间:modification time(mtime)文件“内容数据”更改时,就会更新这个时间,内容数据指文件的内容,不是文件的属性或权限。status time(ctime)文件的“状态”改变,就会更新此时间,如权限与属性被更改。acess time(atime)文件内容被取用,更新这个读取时间,如cat读取/etc/ma
2016-08-01 21:12:10 603
原创 Linux每天一点文件权限与目录配置
ls -al-rw-r--r-- 1 root root 4096 Sep 4 18:25 install.log权限 连接 所有者 用户组 文件容量 修改日期 文件名 文件类型与权限-rw-r--r--第一个字符代表这个文件是“目录,文件或者链接文件”[d]目录
2016-08-01 10:43:38 297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人