- 博客(26)
- 收藏
- 关注
原创 Sort---排序
学习了排序算法之后,觉得应该把它总结一遍,顺一遍自己的思路。因为排序算法比较杂,所以下来和大家一起来看看这么多的排序算法。先来看比较排序,我们看下面一张图我们就以下面的图来讲一讲各种排序,1.直接插入排序思想:每次选择一个元素K,将K插入到已经有序的部分A[1....i]中,插入之前,要把K和A中的每个元素进行比较,若KK,则K插到A[i]的后面。时间复杂度
2016-06-11 14:57:39
284
原创 浅谈栈帧
一、 什么是栈帧?什么是栈帧,首先引用百度百科的经典解释:“栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。实际上,可以简单理解为:栈帧就是存储在用户栈上的(当然内核栈同样适用)每一次函数调用涉及的相关信息的记录单元。也许这样感觉更复杂了,好吧,让我们从栈开始来理解什么是栈帧...栈帧表示程序的函数调用记录,而栈帧又是记录在栈上面,很明显栈上保持了N个栈帧的实体
2016-06-10 10:07:13
15773
7
原创 Linux进程管理---task_struct结构体
为了管理进程,操作系统必须对每个进程所做的事情有一个清楚地描述,为此,操作系统使用数据结构来代表处理的不同实体,这 个数据结构就是所说的进程描述符或者进程控制块。在linux中,把每一个进程的基本信息抽象成一个结构体,这就是task_struct结构体,在include\linux\sched.h文件中定义。 一说到进程,就要想到task_struct结构体。每个进程都会被分配一个t
2016-06-07 10:17:53
487
1
原创 进程调度的算法与原理
调度的实质是一种资源分配,调度算法是指根据处理机分配策略所规定的处理机分配算法。一、先来先服务(FCFS)和短作业(进程)(SJF)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放
2016-06-07 08:52:35
1235
1
原创 linux----进度条程序
自己编写的第一个linux程序---进度条。这个程序要实现的是像进度条一样,每秒都会出现一个*,直到百分之百。并且在后面也会用百分数表示当前进度,而且有一根直线一直在转,表示当前进度正在运行。如下图:650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/82/30/wKioL1dOPwKxvgZ5AAINjJzcvmU678.png"
2016-06-06 10:29:35
263
原创 简单vim配置
我的工作环境是centos6.5.现在是linux菜鸟阶段。所以下来我会很仔细的给大家介绍一下我的vim是如何配置的。首先来展示一下成果:650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/82/2D/wKioL1dNbhvj3EjjAAJkxfHCXqI156.png" title="vim配置.png" alt="wKioL1dN
2016-06-06 10:29:32
219
原创 Linux(三)----find
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个非常
2016-06-06 10:29:29
166
原创 Linux(二)-----常见指令(1)
在Linux的学习中,我们会经常用到下列指令。一 基础指令1.date 显示日期的指令在命令行直接输入date即可650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/80/14/wKioL1c2-ezTr-IQAAAWLk3h8vY628.png" style="float:none;" title="QQ图片201605141804
2016-06-06 10:29:26
167
原创 栈----迷宫(Maze)
大家都知道,至于迷宫的求解问题,可以用穷举法进行求解。那么什么是穷举法了,就是将每一种可能的情况都穷举完。而具体到迷宫的求解问题上,由于在求解过程中可能会遇到某一路径不可行的情况,此时我们就必须按原路返回,这时自然也就会想到栈的应用了,因为栈的一个很重要的特性就是”先进后出”,可以用来记录每次所探索的路径,方便在原路返回的过程中,得到上一步所走路径,再按此方法,退回到可以走得通的位置上,继续探索下
2016-06-06 10:29:22
326
原创 二叉树(二)---线索化二叉树
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息。650) this.width=650;" src="http://s4.51cto.com/wyfs02/M
2016-06-06 10:29:19
170
原创 二叉树(一)
树是n(n>=0)个有限个数据的元素集合,形状像一颗倒过来的树。650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/80/01/wKiom1cz_wejdM9BAAA8rH_zdpQ806.png" title="QQ图片20160512115506.png" alt="wKiom1cz_wejdM9BAAA8rH_zdpQ806.p
2016-06-06 10:29:16
188
原创 Linux(一)
Linux一,计算机计算机五大单元:1,输入单元:包括键盘,鼠标,扫描仪,手写板等。2,中央处理器(CPU):含有算数逻辑,控制,记忆等单元。3,输出单元:显示器,打印机等。计算机处理过程: 冯诺依曼体系结构650) this.width=650;" src="http://s1.5
2016-06-06 10:29:13
218
原创 矩阵-----对称矩阵及其压缩存储&&稀疏矩阵
什么是对称矩阵(SymmetricMatrix)?对称对称-------看设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 压缩存就是矩阵存储时只需要存储上三角/下三角的数据,所以最多存储n(n+1)/2个数据。对称矩阵和压缩存储的对应关系:下三角存储i>=j, SymmetricMatrix[i][j] == Array[i*(i+1)/2+j]650) this.w
2016-06-06 10:29:10
425
原创 Generalized------广义表
广义表是非线性结构,是线性表的一种扩展,是有N个元素组成的有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。A=();B=(a, b);C=(a, b,(c, d));D=(a, b,(c, d),(e, (f), h))E = (((),()))650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7F/23/
2016-06-06 10:29:07
200
原创 菱形虚拟继承&虚函数表&对象模型
菱形继承:650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7E/9B/wKiom1cFDbHDMc8eAAAx4qLLT30181.png" title="QQ图片20160406212235.png" alt="wKiom1cFDbHDMc8eAAAx4qLLT30181.png" />Assitant的菱形继承对象模型650)
2016-06-06 10:29:04
401
原创 RAII&智能指针
RAII:资源分配及初始化。但是这个翻译并没有显示出这个惯用法的真正内涵。RAII的好处在于它提供了一种资源自动管理的方式,当出现异常,回滚等现象时,RAII可以正确的释放资源。内存泄漏会导致: 1.内存耗尽 2.其他程序可能用不了了 3.程序崩溃在资源的获取和释放之间,我们通常会使用资源,但常常一些不可预计的异常会在资源使用过程中产生,这就使资源没有得到正确的释放。但是我们
2016-06-06 10:29:01
293
原创 C++ String的实现
String的实现需要注意的是String的拷贝构造。它的拷贝构造有深拷贝和浅拷贝之分。我们先来用浅拷贝实现Stringclass String{public: String() { str = new char('A'); } String(char *s) { str = new char[strlen(s) + 1]; if (str != NULL) {
2016-06-06 10:28:58
215
原创 线性表--单链表(C++)
单链表演示图: 650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/7E/93/wKiom1cEtCnCDEqvAAAaiTio6Bk130.png" title="QQ图片20160406145946.png" alt="wKiom1cEtCnCDEqvAAAaiTio6Bk130.png" />单链表结构体:s
2016-06-06 10:28:55
295
原创 冒泡排序之回调函数!
前天,鹏哥上课的时候给我们讲了回调函数。虽然他噼里啪啦讲了一大堆,然而我还是听得云里雾里。。(不是我们鹏哥讲的不好啦,O(∩_∩)O哈哈~) 最重要的是 回调函数是什么,什么是回调函数。我不知道它是干什么的,我当然不会写他了。所以我就各种百度,谷歌。接下来,我就用我的话给你们讲一下 什么是回调函数。。。。。什么是回调函数(callback)回调函数是程序上的概念。本质是叫别人做事,自己穿进去额外
2016-06-06 10:28:52
337
原创 一个简单的通讯录。。。
上课的时候老师布置了一个作业,利用结构体实现一个简单地通讯录,这可是我们大一的时候学期末的课设题目啊,不过还好现在的水平比之前高了那么一点。。实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字
2016-06-06 10:28:49
365
原创 测试大端小端的两个个程序
了解大端小端也有好长时间了,今天我就总结一下测试大端小端的两种方法。。第一种:#includeint check_sys(char *p){ if (*p == 0x11) { return 0; } else return 1;}int main(){ int a = 0x11223344; char *p = (char *)&a; int ret = ch
2016-06-06 10:28:46
298
原创 strstr的自我实现!!!
这个就跟上面那个strcat一样了。直接给我我的代码#include#includechar *my_strstr(const char *str1,const char *str2){ assert(str1); assert(str2); char *p1 = NULL; char *p2 = NULL; char *p = str1;//对str1做标记,为了方便输出 while (*p)
2016-06-06 10:28:43
275
原创 strcat 的自我延伸实现(strncat)!!
前两天上课的时候我们老师给我们讲了strcat的自我实现,当时听着很复杂,不过后来老师又把它布置成了作业。今天写完作业后,我有一种醍醐灌顶的感觉。估计老师的用意就在此了。 下面我将写出我自己实现strcat的代码,并且这个要追加的字符长度是由自己控制的。听起来还不错,是不是。。。(*^__^*) 嘻嘻……#include#includechar *my_strncat(char *dest,
2016-06-06 10:28:40
242
原创 “水仙花数”你了解多少??
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。/*在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:153 =
2016-06-06 10:28:37
390
原创 大端字节序和小端字节序之分
我们知道关于字节序有大端和小端之分。一般来说,Inter的处理器使用的是小端(little Indian),Moto的处理器使用的是大端。大端和小端的区别在于,内存对于变量的存放规则不同。小端存储模式是低位放在低地址,高位存放在高地址。而大端则相反。 简单示例如下: a=0x11223344; 低
2016-06-06 10:28:34
253
原创 大小端之分
我们知道关于字节序有大端和小端之分。一般来说,Inter的处理器使用的是小端(little Indian),Moto的处理器使用的是大端。大端和小端的区别在于,内存对于变量的存放规则不同。小端存储模式是低位放在低地址,高位存放在高地址。而大端则相反。 简单示例如下: a=0x11223344;
2016-05-12 18:46:45
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人