- 博客(18)
- 资源 (7)
- 收藏
- 关注
原创 图邻接表存储 深度优先和广度优先遍历
邻接表 是图的常用储存结构之一。邻接表由表头结点和表结点两部分组成,其中图中每个顶点均对应一个存储在数组中的表头结点。如图: 下面直接上代码:#include<stdio.h>#include<stdlib.h>#include"my_queue.h"int visit[MAXSIZE] = {0}; //作为输出判断数组AdjList *build_Gra
2015-11-27 20:18:06 2696 1
原创 文件与文件系统的压缩与打包 tar gzip bzip2
1:linux下常见的压缩文件后缀: .gz .zip .bz2 打包后的: .tar.gz .tar.zip .tar.bz2 2:gzip: 压缩:gzip file 解压:gunzip file.gz 3:bzip2:压缩:bzip2 file 解压: bunzip2 file.bz2 4:下面说说tar: 假设我们现在有这么几个文件,file1 file2 file3
2015-11-25 10:50:17 987
原创 Linux磁盘与文件系统管理
1:简单说说磁盘以及分区的构成,我们知道,磁盘由盘面,磁头,磁臂构成,假设磁盘盘面上只有一层,我们将盘面一圈圈的划分,然后以原点为中心,连一条线出去,某个圈上被截出来的部分就是扇区,整个一个圈就是一个柱面,我们经常说的分区其实就是以柱面为单位的,0磁道1扇区(一个扇区一般情况下为512字节)的MBR记录了操作系统内核文件的位置,占446字节,然后分区表占用66字节. Linux的Ext文件系统 i
2015-11-25 10:48:56 946
原创 Linux文件与目录管理 cp od chattr lsattr
1:在shell脚本中,一定要使用绝对路径。 2:在根目录下,.和..是完全相同的两个目录。 3:cd - 就相当于撤销,表示回到前面状态所在的目录。 4:mkdir -m 700 test 加”-m”参数可以指定权限。 5:将某个目录(比如/home)加入PATH中我们可以:PATH = “$PATH”:/home 6:有时我们ls的时候,会看到在目录后面会加上一些* = | 等,他们表
2015-11-25 10:46:33 582
原创 哈夫曼树的构建 哈夫曼编码
哈夫曼树:给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 哈夫曼编码:在数据通信中,需要将传送的文字转换成二进制的字符串,用0,1码的不同排列来表示字符。例如,需传送的报文为“AFTER DATA EAR ARE ART AREA”,这里用到的字符
2015-11-22 22:48:17 2363
原创 非递归创建二叉树 先序 中序 后序遍历
思想:用”栈”来消除递归。主要是建立的过程,刚开始卡到了如果遇到’#’,那么在else中间出栈之后还需要读一个元素,这样在遇到连续的”#”之后,退栈并不能达到合适的位置,最后听了“巅峰”的建议,还是设置了flag,解决了问题,下面解释下建立过程的思想: 1:正常情况下以先序的方式输入串。一个一个字符读取;如果第一个字符不为“#”,先将它入栈,即我们的根。 2:初始化flag = 0,如果没
2015-11-22 17:11:50 1763 1
原创 三元组创建矩阵 一次定位快速转置 矩阵的加法、减法、乘法
首先说说我们经常见到或者使用的矩阵: (1):三角矩阵:对角线一侧的元素没有限制,另一侧全为0或者常数c。常见的有上三角矩阵和下三角矩阵。 (2):对角矩阵:对角矩阵是指有效元素集中在对角线两侧,我们常用的三对角矩阵来将矩阵的压缩。三对角矩阵指的是三条对角线以外的元素均为0。 (3):稀疏矩阵:指的是矩阵中非零元素的个数低于矩阵中元素总个数的%25。 正是因为稀疏矩阵的这个性质,我们才可以将
2015-11-22 16:51:12 4090
原创 字符串的简单处理
其实我认为计算机存储的东西有两类,一类是数据,一类是字符串,我不想将字符与数据看做一个东西,对于字符需要处理的地方非常多,比如匹配,替换,删除,修改等等,下面我总结下自己今天写的有关字符串处理的几个函数: StrAssign(chars); //构建一个串S StrCopy(&S,chars); //将chars串拷贝给S StrLength(S,&ret); //ret的值就是数组
2015-11-19 08:23:26 596
原创 栈和队列的应用之"表达式求值"和"魔王语言"
一:魔王语言[问题描述] 有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1) α -> β1β2…βm (2)(θδ1δ2…δn)->θ δn θδn-1…θδ1 θ 在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得
2015-11-14 23:38:54 990
原创 父进程等待子进程结束 waitpid wait
我们一直在强调一个概念就是进程是一个程序执行的实例,是内核在虚拟概念下创建的实体,它实例化的体现在用户态就是程序代码和代码使用的变量(存储空间),在内核态就是内核为我们每个进程所保存的数据结构(状态信息)等。 当一个进程由于某种原因停止时,内核并不是直接将为它保存的状态信息从内核移除,相反,进程会一直被保持在一种已经终止的状态,直到被它的父进程回收,当父进程回收已经终止的子进程时,内核会将子进程的
2015-11-09 17:02:08 18133
原创 命令与文件的查询 which whereis locate find
一:whichwhich查找脚本文件也就是我们的系统命令 用法:which [command] 默认根据我们PATH路径去查找,但是不同的用户肯定设置不同的PATH,所以就像普通用户查找不到一些/sbin/下的命令是正常的。但是有的命令我自己可以用,但是查找不到就奇怪了,比如”cd”命令,实际上它是bash内置命令。student@student:$ type cdcd is a shell b
2015-11-09 09:47:40 635
原创 CSAPP学习笔记(异常控制流1)
1:诸如子进程结束之后父进程需要被告知,有时候应用程序需要系统调用,内核通过上下文切换将控制从一个进程切换到另一个进程,还有一个进程发送信号到另一个进程时接收者转而到它的信号处理函数去执行等等,我们的操作系统,甚至硬件无时无刻不在发生“突变”,我们把这种突变叫做异常控制流。即ECF(Exceptional Control Flow),它发生在计算机系统的各个层次。 2:为什么要理解异常控制流:
2015-11-08 21:53:58 662
原创 CSAPP学习笔记(第一,二章)
1:文本文件指的是ASCII码文件,二进制文件指的是除文本文件以外,其他文件。 2:区分数据对象的唯一判别方法是数据的上下文。 3:描述一下一个hello.c文件的处理过程。首先hello.c文件我们叫做源代码,经过预处理 gcc -E hello.c -o hello.i 处理一些宏,#define的预定义等,我们可以在hello.i的最底部找到我们helloworld的简单几行代码,编译之后
2015-11-08 21:52:53 635
原创 JAVA学习笔记(33-53)
33:java中的多维数组,以二位为例: 创建方法:int[][] a = new int[2][3]; 建立一个5*5的数组。 或者下面的建立方法也可以: int[][] c = { {1, 2, 3}, {4, 5, 6}, }; 获取长度:以c数组为例: c.length = 2 原因是此
2015-11-08 21:35:47 566
原创 JAVA学习笔记(1-32)
1:数据的输入中,也需要提前声明变量。java区分大小写,注意保留字的问题,注意分号。 2:用import调用一个类。用new新建一个对象,相当于c中的malloc。 3:用final定义一个宏,相当于#define PI 3.1415926 用final表示为:final double PI 3.1415926 注意:需要加入类型。 4:java中的单字节被 byte代替。 5:变量的赋值
2015-11-08 21:28:29 740
原创 一张图说懂java中 private default protected public 的区别
private:修饰完全隐藏类的成员,这样,就不能从类的外边直接访问他们,我们提供set和get方法,保证类中数据域的安全。default:指默认修饰符,什么都不加,实际上它限制的范围就是一个包内可以访问。如果不在一个包内,即使继承关系任然是不能访问的。protected:经常需要允许子类访问定义在父类中的数据和方法,但是不允许非子类访问这些数据和方法,这种情况下就可以使用protected,它允许
2015-11-08 21:03:08 10192 1
原创 "递归"实现"约瑟夫环","汉诺塔"
一:约瑟夫环问题是由古罗马的史学家约瑟夫提出的,问题描述为:编号为1,2,….n的n个人按顺时针方向围坐在一张圆桌周围,每个人持有一个密码(正整数),一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的那个人出列,将他的密码作为新的m值,从他顺时针方向的下一个人开始重新从1报数,数到m的那个人又出列;如此下去,直到圆桌周围的人全部出列为止。一般情况下
2015-11-05 08:42:44 1194
原创 什么是进程?
我们以”HelloWorld.c”这个最简单的c语言程序为例来给大家介绍到底什么是进程。 程序就是最简单的”HelloWorld.c”,我们想要运行它,执行”gcc HelloWorld.c -o HelloWorld”之后,再./HelloWorld,屏幕上就会显示”Hello World!”的输出了,现在我们将这个过程细化,我们知道一个c语言程序的执行过程分为以下几步:预处理->编译->汇编-
2015-11-01 18:55:15 757
ncurses_programs代码示例
2017-12-28
mysql-connector-c++-1.1.7-linux-glibc2.5-x86-64bit.rpm
2017-01-07
dosbox-0.74 无bug修复版(内含.EXE文件)
2016-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人