- 博客(55)
- 收藏
- 关注
原创 直接插入排序、折半插入排序、希尔排序
#includeusing namespace std;//升序//直接插入排序(稳定)void InsertSort(int arr[],int left,int right){ for(int i=left+1;i<=right;i++) { if(arr[i]<arr[i-1]) { int temp=arr[i]; int j=i-1; do
2016-10-10 12:16:32 368
原创 合并文件A,B,将合并后信息(按字母顺序排列)写入到文件C中
#include using namespace std;#define MAX 100void test(){ FILE* fp; //声明fp是指针 char c[MAX]; char ch; int i=0; //处理A文件 if((fp=fopen("A","r"))==NULL) { cout<<"A文件打不开"<<endl; exit(0);
2016-10-10 10:57:28 2127
原创 二叉树中两个节点的最近公共祖先节点
#include using namespace std;templatestruct BinaryTreeNode{ BinaryTreeNode(const T& data) :_data( data) ,_left( NUL
2016-08-06 23:27:58 448
原创 C基础(46——50)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/85/69/wKiom1eiuNjC6KvmAADEogSgW4M834.png" title="Image.png" alt="wKiom1eiuNjC6KvmAADEogSgW4M834.png" />#include #include #include #include
2016-08-06 10:27:22 272
原创 C基础(41——45)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/85/5B/wKioL1ehYzaiDZp2AACb9eiFOxo559.png" title="Image.png" alt="wKioL1ehYzaiDZp2AACb9eiFOxo559.png" />#include #include #include char* St
2016-08-03 14:00:30 342
原创 C基础(36——40)
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/85/4E/wKiom1efdyfQ0969AAC0Kuc0oC4993.png" title="Image.png" alt="wKiom1efdyfQ0969AAC0Kuc0oC4993.png" />//两个指针#include #include char* Rever
2016-08-03 14:00:27 372
原创 C基础(31——35)
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/85/36/wKiom1ecxprhN9GLAACit6UEtsQ485.png" title="Image.png" alt="wKiom1ecxprhN9GLAACit6UEtsQ485.png" />大端:数据的高位字节存放在地址的低端,低位字节存放在地址的高端小端:数据的高位
2016-08-03 14:00:23 221
原创 C基础(26——30)
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/85/31/wKioL1ecY1vSj4iSAAApgPi_vqs982.png" title="Image.png" alt="wKioL1ecY1vSj4iSAAApgPi_vqs982.png" />如果n越大,则递归计算比较慢//#include //#include
2016-07-30 16:35:18 194
原创 C基础(21——25)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/85/01/wKioL1eZn4Wg5SgcAAAjWAeUY7o992.png" title="Image.png" alt="wKioL1eZn4Wg5SgcAAAjWAeUY7o992.png" />650) this.width=650;" src="http://s3.51
2016-07-30 16:35:16 241
原创 RBTree红黑树
对平衡的要求低二叉搜索树性质:1.每个节点不是红的就是黑的2.根节点是黑的3.若一个节点是红的,则它的两个子节点是黑的(即不能出现两个连续的红的)4.每条路径的黑节点的数量相等5.每个叶子节点都是黑的(叶子节点:NIL节点,空节点)最长路径不超过最短路径的两倍650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/84/E2/wKiom1
2016-07-30 16:35:13 210
原创 C基础(16——20)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/84/7E/wKiom1eR9cjgkiq9AABvHRRo1T4763.png" title="Image.png" alt="wKiom1eR9cjgkiq9AABvHRRo1T4763.png" />#include #include void test(){
2016-07-22 18:40:59 199
原创 C基础(11——15)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/84/75/wKioL1eQ42HDeQ1vAABzSkpuu54488.png" title="Image.png" alt="wKioL1eQ42HDeQ1vAABzSkpuu54488.png" />#include #include void test(){
2016-07-22 18:40:56 241
原创 Linux之进程终止
Linux中进程退出分为正常退出和异常退出1.正常退出(1)在main()函数中执行return(2)调用exit()函数(3)调用_exit()函数2.异常退出(1)调用about()函数(2)进程收到某个信号,而该信号使进程终止对比(1)exit与returnexit:一个函数,有参数。exit执行完后把控制权交给系统return:函数执行完后的返回。return执行完后把控制权交给调用函数(
2016-07-21 10:44:32 664
原创 Linux之fork与vfork区别
创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork()650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/84/64/wKiom1ePL3ez9NYFAAAHVJ_16P4891.png" title="Image.png" alt="wKiom1ePL3ez9NYFAAAHVJ_16P4891.png" />1.
2016-07-21 10:44:29 376
原创 linux下进度条的简单实现
p_b.c650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/84/5C/wKioL1eOI3fCljkxAACQNFsWySQ424.png" title="Image.png" alt="wKioL1eOI3fCljkxAACQNFsWySQ424.png" />Makefile650) this.width=650;" src=
2016-07-20 10:18:34 183
原创 Linux之strace简单用法
Linux下,进程不能直接访问硬件设备。当进程需要访问硬件设备时(读取磁盘文件、接收网络数据等),则必须由用户态切换为内核态,然后通过系统调用来访问硬件设备。strace是跟踪进程执行时的系统调用和所接收的信号(即它跟踪到一个进程产生的系统调用,包括参数、返回值、执行消耗的时间)。strace最简单的用法是执行一个指定的命令(过程中,starce会记录和解析命令进程的所有系统调用及这个进程的所有的
2016-07-18 13:34:58 6854 2
原创 实现几个shell小脚本
实现进度条my_pb.sh650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/83/18/wKiom1dqlG6gHCYgAAA-1PyY3TI655.png" title="Image.png" alt="wKiom1dqlG6gHCYgAAA-1PyY3TI655.png" />运行结果650) this.width=650;"
2016-06-25 11:14:07 295
原创 Linux下字符串的截取
第一种方法:利用键盘上#$%三个键之间的前后关系${varible##*string} 从左向右截取最后一个string后的字符串${varible#*string} 从左向右截取第一个string后的字符串${varible%%string*} 从右向左截取最后一个string后的字符串${varible%string*} 从右向左截取第一个string后的字符串eg:650) this
2016-06-22 13:38:37 4496
原创 C基础(6-10)
#include #include int IsPrime(int num){ int i= 2; if(num ==1) //1既不是质数也不是合数 return 0; for(;i<=
2016-06-17 19:18:57 248
原创 消息队列的简单实现
消息队列:一个进程向另一个进程发送数据块消息队列基于消息,管道基于字节流消息队列是用链表实现1.创建:int megget(key_t key, int msgflag) key:函数ftok()的返回值 msgflag:IPC_CREAT是创建新的消息队列;IPC_EXCL与IPC_CREAT一起使用,即如果要创建的消息队列已存在,则返回错误 成功:返回队列标识
2016-06-17 18:37:28 301
原创 死锁
1.死锁: 多道程序并发执行时(多任务系统),一个/多个进程等待资源,而资源又被进程本身或其他进程占用着。(永久性等待)2.产生死锁的四个必要条件: (1)互斥条件。 进程对所分配到的资源进行排它性使用,即在一段时间内,某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直到占有该资源的进程用完后释放。(2)请求和保持(占有且等待)。 指该进程至少保持
2016-06-17 18:37:25 223
原创 fopen、open、popen
1.fopen ——FILE* fopen(const char* path,const char* mode) 打开普通文件 带缓冲区 缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据返回值: fopen()文件顺利打开后,返回指向该流的文件指针,如果打开文件失败,则返回NULL,并将错误代码
2016-06-17 18:37:22 506
原创 命名管道(FIFO)的实现
管道随进程命名管道是一个设备文件,是存在于硬盘上的文件用mkfifo()创建命名管道,可用于任何两个进程之间的通信client.c(写端)#include#include#include#include#include#include#include #define _PATH_ "/tmp/file.tmp"#define _SIZE_ 100int mai
2016-06-17 18:37:19 427
原创 匿名管道的四种特殊情况
管道随进程匿名管道是存在于内存中的特殊文件特点: 1.单向 2.有血缘关系的进程间通信 3.实现进程间同步 4.提供“流式服务”匿名管道的实现:test.c#include#include#include#includeint main(){ int _pipe[2]; int ret
2016-06-17 18:37:17 376
原创 环形队列的实现原理
环形队列是一个首尾相连的FIFO(命名管道)的数据结构,它采用数组的线性空间。它能很快知道队列是否为满或者为空,也能很快的存取数据。原理:内存上没有环形结构,因此环形队列利用数组的线性空间来实现。当数据到了尾部时,它将转回到0位置来处理。这个转回操作通过取模来执行。构造:逻辑上,将数组q[0]与q[MAXN-1]相连接,形成一个存放队列的环形空间。 用数组下标来标明队列的读、写位置。hea
2016-06-17 18:37:14 3276 1
原创 Linux中进程正常退出return和exit()的区别
exit是一个函数,有参数。void exit(int status) 。exit执行完后把控制权交给系统。return是函数执行完后的返回。return执行完后把控制权交给调用函数。 return()是当前函数返回。如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值,依次类推。return是
2016-06-17 18:37:11 1960
原创 浅谈文件描述符与文件指针
一、文件描述符:内核利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。1.优点: 1.基于文件描述符的I/O操作兼容POSIX(可移植操作系统接口)标准 2.UNIX/LINUX的系统调用中,大量系统调用都依赖于文件描述符2.缺点: 1.在非UNIX/LINUX操作系统上,无法基
2016-06-17 18:37:08 262
原创 浅谈inode
1.初识inode:文件存于硬盘上(硬盘最小存储单元是“扇区”(sector),每个扇区储存512字节)操作系统读硬盘时,一次性读取一个“块”(block)(8个sector组成)由多个扇区组成的块——>文件存取的最小单位文件数据存储在“块”中储存文件元信息——>inode(索引节点)2.inode包含文件的元信息,其内容: 文件字节数、文件拥有者的User ID、文件的Group ID、文件的
2016-06-17 18:37:05 234
原创 二叉树的线索化
#includeusing namespace std;enum PointerTag{ THREAD, LINK};templatestruct BinaryTreeNodeThd{ BinaryTreeNodeThd( const T & x)
2016-06-17 18:37:03 148
原创 有关二叉树的简单实现
#include#include#includeusing namespace std;templatestruct BinaryTreeNode{ BinaryTreeNode(const T& x) :_data( x)
2016-06-17 18:37:00 236
原创 printf()的返回值
#include #include int main(){ int i=43; printf( "%d\n",printf("%d" ,printf("%d",i))); system( "pause"); return 0;}printf() 返回一个in
2016-06-17 18:36:57 733
原创 实现动态顺序表
头文件Seqlist.h中:#pragma once#include #include typedef int DataType;typedef struct SeqList{ DataType * _array; //数据块指针 size_t _size; //当前的有效数据个数 size_t _capacity; //容量}Seqlist;//打印顺序表
2016-06-17 18:36:54 273
原创 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
#include #include int length(const char *str){ int len=0; assert(str); while(*str) { len++; str++; } return len;}void reverse_str(char *start,char *end){ while(star
2016-06-17 18:36:49 212
原创 判断回文数、回文字符串(从左边读和从右边读一样)
1.判断一个数是不是回文数,如:"123321"#include int main(){ int m=1234; //m是要判断的数 int n=0; //n是反转后的数 int ret=m; while(m) {
2016-06-17 18:36:46 1265
原创 使用可变参数列表实现print("s\tc\n","bit-tech",'w');
#include #include void print(char *format,...){ va_list arg; va_start(arg,format); while(*format) { switch(*format) { case 's' :
2016-06-17 18:36:44 497
原创 使用可变参数列表实现任意个数求平均值
#include #include int average(int val,...){ int i=0; int sum=0; va_list arg; va_start(arg,val); for(i=0;i<val;i++) { sum+=va_arg(arg, int); } va_end(arg); return sum/val;}
2016-06-17 18:36:41 413
原创 编写程序实现strlen()函数,strcmp(),strcpy(),strcat()的功能
1.strlen()函数的实现(求字符串长度的函数)#include #include int my_strlen(const char *str){ int count=0; assert(str!=NULL); while(*str) { count++; str++; } return count;}int ma
2016-06-17 18:36:38 1893
原创 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
#include int main(){ char a=0; int num_count=0; int space_count=0; int other_count=0; //注意此处,不能写成a=getchar(),然后while(a!='\n'),这样做只能输
2016-06-17 18:36:36 1151
原创 实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数
比如:输入字符串“1234”,返回数字1234。 输入字符串“+1234”,返回数字1234. 输入字符串“-1234”,返回数字-1234. #include int my_atoi(char s[10]){ int flag=1; //代表符号位的正负号 int ret=0; //用于存储取出来的数 ch
2016-06-17 18:36:33 1091
原创 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
#include int main(){ int arr[5]; int i,j; int len=sizeof(arr)/sizeof(arr[0]); //初始化数组 for(i=0;i<len;i++) { scanf("%d",&arr[i]); } //查找的过程 j=
2016-06-17 18:36:30 363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人