- 博客(15)
- 收藏
- 关注
原创 两个栈实现队列
s1和s2为两个栈1. 入队时,将元素压入s1。2. 出队时,判断s2是否为空,如不为空,则直接弹出顶元素;如为空,则将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队。这个思路,避免了反复“倒”栈,仅在需要时才“倒”一次。
2017-10-10 20:57:18
161
原创 替换空格
前提:数组必需有多余的空间1. 先遍历一遍字符串,求出字符串的长度和空格数2. 求出新字符串的长度3. 从新字符串的尾部开始将旧字符串开始的不是空格的移动到新字符串的尾部,如果遇到空格,则将用替换的字符放到扩展的位置并移动例如:#include char* newstring(char* s) //O(n){int i = 0
2017-10-10 19:55:34
143
原创 c++中的操作符重载
1. 通过operator关键字可以利用函数扩展操作符2. operator的本质是通过函数重载实现操作符重载3. 应用于类中并且重载函数为全局函数时,要使用友元函数(关键字friend)4. 当重载函数为类中的成员函数时, 不用friend并且少一个函数参数注意点:1. 当无法修改左操作数的类时, 使用全局函数进行重载2. = [] () 和 -> 只能通
2017-10-10 08:58:53
153
原创 查找算法
1. 二分法(1)先将查找表排序(2)取中间元素进行比较1)若给定数据=中间元素,则查找成功2)若给定数据3)若给定数据>中间元素,则在中间元素右区间进行二分查找例如://递归版本:效率低,但可读性高int binary_search(int *a, int low, int high, int key) //O(logn){int ret = -1
2017-10-09 20:27:48
135
原创 排序算法
1. 选择排序: 有i个元素,每一趟从i-1个待拍元素中选出关键字最小的元素,作为有序元素的第i个元素例如:#include void swap(int *a, int *b){int tmp;tmp = *a;*a = *b;*b = tmp;}void selectsort(int *a, int len){int i,j;i
2017-10-09 11:48:23
219
原创 二进制中1的个数
两种解法:第一种:常规解法使用flag = 1这个数每次与原来的整数做与运算,然后向左移动的方式计算1的个数例如:#include int Numbercount(int n){int count = 0;unsigned int flag = 1;while(flag){if(n & flag)count++;flag = fl
2017-10-09 10:08:26
156
原创 斐波那契数列的解法
第一种解法:递归,效率很低#include long long facbonacci(int n){ if(n == 0) return 0; if(n == 1) return 1; return facbonacci(n-1)+facbonacci(n-2);}int main(void){ int n; int i; for(i = 0; i < 8;
2017-10-09 08:54:45
254
原创 字符设备和块设备的区别
1.字符设备是一种按照字节来访问的设备2.在大部分Unix中,块设备不能按照字节处理数据,只能一次传输一个或者多个512个字节(或者更大的2次幂的数)的整块数据 而在Linux中允许块设备访问任意字节的数据3.块设备可以随机访问(不按照顺序)数据,字符设备按照字节流的方式有序的访问数据
2017-10-07 10:22:02
1044
原创 进程
一、进程的生老病死 1.进程的创建 (1)pid-t fork(void):fork创建子进程,把父进程数据空间、堆和栈复制一份; 返回值(一般函数返回值有两个一般采用结构体储存):1)为0:子进程(从fork()函数后面开始运
2017-08-01 14:14:30
154
原创 scanf、sscanf、fscanf的总结
1.scanf的经典用法:scanf("%[set]",&buf);以屏幕(stdin为输入源) set有两种情况: (1)“set”:表示在输入的字符串中将匹配所有在set中出现的字
2017-08-01 09:10:53
697
原创 tftp配置
步骤:若开发板上有tftp源代码 一、在linux下 1.下载工具包:sudo apt-get install openbsd-inetd tftpd tftp 2.配置:sudo vim /etc/inetd.conf 将未注释的命令的末尾 /srv/tftp改成你想要的路径
2017-07-26 15:09:33
308
原创 linux下NFS服务器的安装与配置 亲测
步骤: 1.安装 sudo apt-get install nfs-kernel-server 2.配置主机linux : (1)sudo vim /etc/exports (2)在文件末尾加上:共享目录 服务IP (服务权限),例如:/opt/target
2017-07-26 12:36:49
247
原创 交叉工具链的安装
1. 下载工具链的安装包2. 将安装包复制到/usr/local/arm目录下(需要权限:sudo)3.解压缩4.修改环境变量 (1)cd到家目录 (2)vim .bashrc(“.bashrc”环境变量设置文件) (3)在文件末尾加上export PATH=/usr/local/arm/arm-2009q3/bin:$PATH (4)重启终端
2017-07-26 09:41:08
241
原创 数组和链表的区别
一、从内存角度上看 1.数组静态分配内存,链表动态分配内存; 2.数组在内存中连续,链表不连续; 3.数组元素在栈区,链表元素在堆区;二、从逻辑角度上看 1.数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); 2.数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。总结:如果需
2017-07-26 08:10:02
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人